introducción al rom hacking - parte 2

Post on 15-Apr-2017

300 Views

Category:

Engineering

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Rama estudiantil de IEEE en la UGR

Introducción al ROM Hacking:Formatos comunes en juegos

Benito Palacios Sánchezbenito.palaciossanchez.es@ieee.org

1 de abril de 2016

Textos Imágenes Tipografías y audios Reto

Contenido

TextosCodi�cacionesFormatos

Tipografías

ImágenesFondosSpritesTexturas

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 2 / 36

Textos Imágenes Tipografías y audios Reto

Contenido

TextosCodi�cacionesFormatos

Tipografías

ImágenesFondosSpritesTexturas

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 2 / 36

Textos Imágenes Tipografías y audios Reto

Contenido

TextosCodi�cacionesFormatos

Tipografías

ImágenesFondosSpritesTexturas

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 2 / 36

Textos Imágenes Tipografías y audios Reto

Naturaleza de los textos

¿Cómo guardamos texto de forma digital?

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 3 / 36

Textos Imágenes Tipografías y audios Reto

Codi�caciones

Codi�cación de caracteres

Es el método que permite convertir un carácter de unlenguaje natural en un símbolo de otro sistema derepresentación aplicando reglas de codi�cación. [Wikipedia]

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 4 / 36

Textos Imágenes Tipografías y audios Reto

Codi�caciones

Codi�cación de caracteres

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 4 / 36

Textos Imágenes Tipografías y audios Reto

Codi�caciones

ASCII

Codi�ca caracteres del alfabeto latino en 7 bits.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 5 / 36

Textos Imágenes Tipografías y audios Reto

Codi�caciones

Latin-1 (ISO 8859-1)

Codi�cación extendida de ASCII. Utiliza 8 bits añadiendo 128caracteres necesarios para las lenguas europeas.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 6 / 36

Textos Imágenes Tipografías y audios Reto

Codi�caciones

Unicode

Estándar universal de codi�cación de caracteres para lamayoría de lenguas (incluidas las muertas). La última versión8.0 incluye 120.737 caracteres.

Unicode es solo una tabla, no especi�ca la codi�cación.Codi�caciones para Unicode:

UTF-8: codi�cación de 8 bits de longitud variable.’A’ = 41h, ’ ’ = F0 A0 9C 8EUTF-16: codi�cación de 16 bits de longitud variable.’A’ = 0041, ’ ’ = D841 DF0EUTF-32: codi�cación de 32 bits de longitud �ja.’A’ = 00000041, ’ ’ = 0002070E

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 7 / 36

Textos Imágenes Tipografías y audios Reto

Codi�caciones

Unicode

Estándar universal de codi�cación de caracteres para lamayoría de lenguas (incluidas las muertas). La última versión8.0 incluye 120.737 caracteres.

Unicode es solo una tabla, no especi�ca la codi�cación.Codi�caciones para Unicode:

UTF-8: codi�cación de 8 bits de longitud variable.’A’ = 41h, ’ ’ = F0 A0 9C 8EUTF-16: codi�cación de 16 bits de longitud variable.’A’ = 0041, ’ ’ = D841 DF0EUTF-32: codi�cación de 32 bits de longitud �ja.’A’ = 00000041, ’ ’ = 0002070E

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 7 / 36

Textos Imágenes Tipografías y audios Reto

Codi�caciones

Unicode

Estándar universal de codi�cación de caracteres para lamayoría de lenguas (incluidas las muertas). La última versión8.0 incluye 120.737 caracteres.

Unicode es solo una tabla, no especi�ca la codi�cación.Codi�caciones para Unicode:

UTF-8: codi�cación de 8 bits de longitud variable.’A’ = 41h, ’ ’ = F0 A0 9C 8EUTF-16: codi�cación de 16 bits de longitud variable.’A’ = 0041, ’ ’ = D841 DF0EUTF-32: codi�cación de 32 bits de longitud �ja.’A’ = 00000041, ’ ’ = 0002070E

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 7 / 36

Textos Imágenes Tipografías y audios Reto

Codi�caciones

Unicode

Estándar universal de codi�cación de caracteres para lamayoría de lenguas (incluidas las muertas). La última versión8.0 incluye 120.737 caracteres.

Unicode es solo una tabla, no especi�ca la codi�cación.Codi�caciones para Unicode:

UTF-8: codi�cación de 8 bits de longitud variable.’A’ = 41h, ’ ’ = F0 A0 9C 8EUTF-16: codi�cación de 16 bits de longitud variable.’A’ = 0041, ’ ’ = D841 DF0EUTF-32: codi�cación de 32 bits de longitud �ja.’A’ = 00000041, ’ ’ = 0002070E

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 7 / 36

Textos Imágenes Tipografías y audios Reto

Codi�caciones

Unicode

Estándar universal de codi�cación de caracteres para lamayoría de lenguas (incluidas las muertas). La última versión8.0 incluye 120.737 caracteres.

Unicode es solo una tabla, no especi�ca la codi�cación.Codi�caciones para Unicode:

UTF-8: codi�cación de 8 bits de longitud variable.’A’ = 41h, ’ ’ = F0 A0 9C 8EUTF-16: codi�cación de 16 bits de longitud variable.’A’ = 0041, ’ ’ = D841 DF0EUTF-32: codi�cación de 32 bits de longitud �ja.’A’ = 00000041, ’ ’ = 0002070E

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 7 / 36

Textos Imágenes Tipografías y audios Reto

Codi�caciones

Unicode

Estándar universal de codi�cación de caracteres para lamayoría de lenguas (incluidas las muertas). La última versión8.0 incluye 120.737 caracteres.

Unicode es solo una tabla, no especi�ca la codi�cación.Codi�caciones para Unicode:

UTF-8: codi�cación de 8 bits de longitud variable.’A’ = 41h, ’ ’ = F0 A0 9C 8EUTF-16: codi�cación de 16 bits de longitud variable.’A’ = 0041, ’ ’ = D841 DF0EUTF-32: codi�cación de 32 bits de longitud �ja.’A’ = 00000041, ’ ’ = 0002070E

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 7 / 36

Textos Imágenes Tipografías y audios Reto

Codi�caciones

Shift Jis (CP 932)

Codi�cación de longitud variable (1 o 2 bytes) para caracteresjaponeses. Incluye ASCII.

Figura: Tabla para caracteres con primer byte 0x82Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 8 / 36

Textos Imágenes Tipografías y audios Reto

Codi�caciones

Ejemplos en archivos

¿?

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 9 / 36

Textos Imágenes Tipografías y audios Reto

Codi�caciones

Ejemplos en archivos

UTF-16

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 9 / 36

Textos Imágenes Tipografías y audios Reto

Codi�caciones

Ejemplos en archivos

UTF-16

¿?

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 9 / 36

Textos Imágenes Tipografías y audios Reto

Codi�caciones

Ejemplos en archivos

UTF-16

Shift Jis

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 9 / 36

Textos Imágenes Tipografías y audios Reto

Codi�caciones

TablasAlgunos juegos usan codi�caciones propietarias...

... fácil mapeo con la tipografía.

... di�cultar el acceso.

Figura: Textos de Pokémon Perla

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 10 / 36

Textos Imágenes Tipografías y audios Reto

Codi�caciones

Tablas

Valor Carácter Valor Carácter Valor Carácter01A9h ¡ 01ABh ! 01ADh ,01DEh SP E000h NL 0152h E0132h H 013Ah P 013Eh T0145h a 0147h c 0148h d014Ch h 0150h l 0152h n0153h o 0156h r 0158h t

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 11 / 36

Textos Imágenes Tipografías y audios Reto

Formatos

Punteros (offsets)

Número enteros que indican la posición del texto.

Tipos:Absoluto: desde el comienzo del archivo.Relativo: desde otra posición

Relativo a una sección del �chero.Relativo a la posición actual.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 12 / 36

Textos Imágenes Tipografías y audios Reto

Formatos

Punteros (offsets)

Número enteros que indican la posición del texto.

Tipos:Absoluto: desde el comienzo del archivo.Relativo: desde otra posición

Relativo a una sección del �chero.Relativo a la posición actual.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 12 / 36

Textos Imágenes Tipografías y audios Reto

Formatos

Punteros (offsets)

Número enteros que indican la posición del texto.

Tipos:Absoluto: desde el comienzo del archivo.Relativo: desde otra posición

Relativo a una sección del �chero.Relativo a la posición actual.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 12 / 36

Textos Imágenes Tipografías y audios Reto

Formatos

Punteros (offsets)

Número enteros que indican la posición del texto.

Tipos:Absoluto: desde el comienzo del archivo.Relativo: desde otra posición

Relativo a una sección del �chero.Relativo a la posición actual.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 12 / 36

Textos Imágenes Tipografías y audios Reto

Formatos

Punteros (offsets)

Formato BMG

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 13 / 36

Textos Imágenes Tipografías y audios Reto

Formatos

Punteros (offsets)

Formato BMG

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 13 / 36

Textos Imágenes Tipografías y audios Reto

Formatos

Punteros (offsets)

Formato BMG

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 13 / 36

Textos Imágenes Tipografías y audios Reto

Formatos

Punteros (offsets)

Formato BMG

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 13 / 36

Textos Imágenes Tipografías y audios Reto

Formatos

Punteros (offsets)

Formato BMG

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 13 / 36

Textos Imágenes Tipografías y audios Reto

Formatos

Punteros (offsets)

Formato BMG

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 13 / 36

Textos Imágenes Tipografías y audios Reto

Formatos

Punteros (offsets)

Formato BMG

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 13 / 36

Textos Imágenes Tipografías y audios Reto

Formatos

Punteros (offsets)

Formato BMG

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 13 / 36

Textos Imágenes Tipografías y audios Reto

Formatos

Punteros (offsets)

Formato BMG

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 13 / 36

Textos Imágenes Tipografías y audios Reto

Naturaleza de las imágenes

¿Qué necesitamos para formar una imagen?

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 14 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Partes de una imagen

Una imagen se compone de sucesión de colores (píxeles).

+ =

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 15 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Partes de una imagen

Una imagen se compone de sucesión de colores (píxeles).

+ =

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 15 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Partes de una imagen

Una imagen se compone de sucesión de colores (píxeles).

+

=

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 15 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Partes de una imagen

Una imagen se compone de sucesión de colores (píxeles).

+ =

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 15 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Colores

Los colores se forman mezclando los tres colores base(componentes / canal): rojo, verde y azul.

El rango de valores de cada componente de�nelos colores únicos.Generalmente: 8 bits/canal28 = 256→ 2563 = 16,777,216 colores únicos.NDS: 5 bits (BGR555)→ 32.768 colores únicos.

Un color ocupa 16 bits:5 por canal + 1 transparencia.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 16 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Colores

Los colores se forman mezclando los tres colores base(componentes / canal): rojo, verde y azul.

El rango de valores de cada componente de�nelos colores únicos.Generalmente: 8 bits/canal28 = 256→ 2563 = 16,777,216 colores únicos.NDS: 5 bits (BGR555)→ 32.768 colores únicos.

Un color ocupa 16 bits:5 por canal + 1 transparencia.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 16 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Colores

Los colores se forman mezclando los tres colores base(componentes / canal): rojo, verde y azul.

El rango de valores de cada componente de�nelos colores únicos.Generalmente: 8 bits/canal28 = 256→ 2563 = 16,777,216 colores únicos.NDS: 5 bits (BGR555)→ 32.768 colores únicos.

Un color ocupa 16 bits:5 por canal + 1 transparencia.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 16 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Colores

Los colores se forman mezclando los tres colores base(componentes / canal): rojo, verde y azul.

El rango de valores de cada componente de�nelos colores únicos.Generalmente: 8 bits/canal28 = 256→ 2563 = 16,777,216 colores únicos.NDS: 5 bits (BGR555)→ 32.768 colores únicos.

Un color ocupa 16 bits:5 por canal + 1 transparencia.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 16 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Paletas

Agrupación de colores. De�nen los colores de una imagen. Elprimer color suele ser el transparente.

Modalidades del formato NCLR:1 paleta de 256 colores = 256 colores.16 paletas de 16 colores = 256 colores.16 paletas de 256 colores = 4.096 colores.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 17 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Paletas

Agrupación de colores. De�nen los colores de una imagen. Elprimer color suele ser el transparente.

Modalidades del formato NCLR:1 paleta de 256 colores = 256 colores.16 paletas de 16 colores = 256 colores.16 paletas de 256 colores = 4.096 colores.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 17 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Paletas

Agrupación de colores. De�nen los colores de una imagen. Elprimer color suele ser el transparente.

Modalidades del formato NCLR:1 paleta de 256 colores = 256 colores.16 paletas de 16 colores = 256 colores.16 paletas de 256 colores = 4.096 colores.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 17 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Paletas

Agrupación de colores. De�nen los colores de una imagen. Elprimer color suele ser el transparente.

Modalidades del formato NCLR:1 paleta de 256 colores = 256 colores.16 paletas de 16 colores = 256 colores.16 paletas de 256 colores = 4.096 colores.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 17 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Píxeles

La información que guardamos por píxel es la posición en lapaleta de su color.

Codi�caciones del formato NCGR:8 bits por píxel (bpp): 28 = 256 posiciones diferentes→256 colores diferentes.4 bpp: 16 colores diferentes.1 bpp: 2 colores diferentes (blanco o negro).

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 18 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Píxeles

La información que guardamos por píxel es la posición en lapaleta de su color.

Codi�caciones del formato NCGR:8 bits por píxel (bpp): 28 = 256 posiciones diferentes→256 colores diferentes.4 bpp: 16 colores diferentes.1 bpp: 2 colores diferentes (blanco o negro).

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 18 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Píxeles

La información que guardamos por píxel es la posición en lapaleta de su color.

Codi�caciones del formato NCGR:8 bits por píxel (bpp): 28 = 256 posiciones diferentes→256 colores diferentes.4 bpp: 16 colores diferentes.1 bpp: 2 colores diferentes (blanco o negro).

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 18 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Píxeles

La información que guardamos por píxel es la posición en lapaleta de su color.

Codi�caciones del formato NCGR:8 bits por píxel (bpp): 28 = 256 posiciones diferentes→256 colores diferentes.4 bpp: 16 colores diferentes.1 bpp: 2 colores diferentes (blanco o negro).

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 18 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Agrupación de píxeles

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 19 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Agrupación de píxeles

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 19 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Agrupación de píxeles

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 19 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Agrupación de píxeles

Lineal00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F

Horizontal00 01 02 03 04 05 06 07 10 11 12 13 14 15 16 1720 21 22 23 24 25 26 27 30 31 32 33 34 35 36 3740 41 42 43 44 45 46 47 50 51 52 53 54 55 56 5760 61 62 63 64 65 66 67 70 71 72 73 74 75 76 7708 09 0A 0B 0C 0D 0E 0F 18 19 1A 1B 1C 1D 1E 1F

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 20 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Agrupación de píxeles

Lineal00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F

Horizontal00 01 02 03 04 05 06 07 10 11 12 13 14 15 16 1720 21 22 23 24 25 26 27 30 31 32 33 34 35 36 3740 41 42 43 44 45 46 47 50 51 52 53 54 55 56 5760 61 62 63 64 65 66 67 70 71 72 73 74 75 76 7708 09 0A 0B 0C 0D 0E 0F 18 19 1A 1B 1C 1D 1E 1F

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 20 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Compresión

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 21 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Compresión

+ =

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 21 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Compresión

+

=

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 21 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Compresión

+ =

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 21 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Compresión

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 21 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Compresión

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 21 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Compresión

Compresión de tiles con el formato NSCR:Evita guardar tiles idénticos.Evita guardar tiles volteados horizontalmente overticalmente.Permite agrupar imágenes.Permite usar 256 colores distintos en formatos 4bpp.

Cada tile usa una paleta.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 21 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Compresión

Compresión de tiles con el formato NSCR:Evita guardar tiles idénticos.Evita guardar tiles volteados horizontalmente overticalmente.Permite agrupar imágenes.Permite usar 256 colores distintos en formatos 4bpp.

Cada tile usa una paleta.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 21 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Compresión

Compresión de tiles con el formato NSCR:Evita guardar tiles idénticos.Evita guardar tiles volteados horizontalmente overticalmente.Permite agrupar imágenes.Permite usar 256 colores distintos en formatos 4bpp.

Cada tile usa una paleta.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 21 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Compresión

Compresión de tiles con el formato NSCR:Evita guardar tiles idénticos.Evita guardar tiles volteados horizontalmente overticalmente.Permite agrupar imágenes.Permite usar 256 colores distintos en formatos 4bpp.

Cada tile usa una paleta.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 21 / 36

Textos Imágenes Tipografías y audios Reto

Imágenes de fondo

Compresión

Compresión de tiles con el formato NSCR:Evita guardar tiles idénticos.Evita guardar tiles volteados horizontalmente overticalmente.Permite agrupar imágenes.Permite usar 256 colores distintos en formatos 4bpp.

Cada tile usa una paleta.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 21 / 36

Textos Imágenes Tipografías y audios Reto

Sprites

Casos de uso

Capas Animaciones

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 22 / 36

Textos Imágenes Tipografías y audios Reto

Sprites

Casos de uso

Capas Animaciones

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 22 / 36

Textos Imágenes Tipografías y audios Reto

Sprites

Casos de uso

Capas Animaciones

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 22 / 36

Textos Imágenes Tipografías y audios Reto

Sprites

Casos de uso

Capas Animaciones

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 22 / 36

Textos Imágenes Tipografías y audios Reto

Sprites

Casos de uso

Ahorro de espacio con capas

+ =

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 22 / 36

Textos Imágenes Tipografías y audios Reto

Sprites

Formatos base

Paleta

+

Tiles

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 23 / 36

Textos Imágenes Tipografías y audios Reto

Sprites

Formatos base

Paleta

+

Tiles

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 23 / 36

Textos Imágenes Tipografías y audios Reto

Sprites

Celdas

Nitro CElls Resource (.ncer)

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 24 / 36

Textos Imágenes Tipografías y audios Reto

Sprites

AnimacionesNitro AnimatioN Resource (.nanr)

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 25 / 36

Textos Imágenes Tipografías y audios Reto

3D

Texturas

Nitro TeXture (.nsbtx)

Uso en modelos 3D

Paletas + Tiles

Codi�caciones: A3I5, A4I4, A5I3,4x4 texel

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 26 / 36

Textos Imágenes Tipografías y audios Reto

3D

Texturas

Nitro TeXture (.nsbtx)

Uso en modelos 3D

Paletas + Tiles

Codi�caciones: A3I5, A4I4, A5I3,4x4 texel

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 26 / 36

Textos Imágenes Tipografías y audios Reto

3D

Texturas

Nitro TeXture (.nsbtx)

Uso en modelos 3D

Paletas + Tiles

Codi�caciones: A3I5, A4I4, A5I3,4x4 texel

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 26 / 36

Textos Imágenes Tipografías y audios Reto

3D

Texturas

Nitro TeXture (.nsbtx)

Uso en modelos 3D

Paletas + Tiles

Codi�caciones: A3I5, A4I4, A5I3,4x4 texel

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 26 / 36

Textos Imágenes Tipografías y audios Reto

3D

Modelos 3D

Nitro MoDel (.nsbbmd)

Geometría 3D.

Comandos de OpenGL 1.0.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 27 / 36

Textos Imágenes Tipografías y audios Reto

3D

Modelos 3D

Nitro MoDel (.nsbbmd)

Geometría 3D.

Comandos de OpenGL 1.0.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 27 / 36

Textos Imágenes Tipografías y audios Reto

3D

Modelos 3D

Nitro MoDel (.nsbbmd)

Geometría 3D.

Comandos de OpenGL 1.0.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 27 / 36

Textos Imágenes Tipografías y audios Reto

Tipografías y audios

Tipografías

Nitro FonT Resource (.nftr)

Una imagen por carácter.

Mapeo binario↔ imagen.

Tabla + Imágenes.

Útil para reemplazo decaracteres.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 28 / 36

Textos Imágenes Tipografías y audios Reto

Tipografías y audios

Tipografías

Nitro FonT Resource (.nftr)

Una imagen por carácter.

Mapeo binario↔ imagen.

Tabla + Imágenes.

Útil para reemplazo decaracteres.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 28 / 36

Textos Imágenes Tipografías y audios Reto

Tipografías y audios

Tipografías

Nitro FonT Resource (.nftr)

Una imagen por carácter.

Mapeo binario↔ imagen.

Tabla + Imágenes.

Útil para reemplazo decaracteres.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 28 / 36

Textos Imágenes Tipografías y audios Reto

Tipografías y audios

Tipografías

Nitro FonT Resource (.nftr)

Una imagen por carácter.

Mapeo binario↔ imagen.

Tabla + Imágenes.

Útil para reemplazo decaracteres.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 28 / 36

Textos Imágenes Tipografías y audios Reto

Tipografías y audios

Audios

Sound DATa (.sdat)

Sonido digitalizado (STRM).PCM, ADPCM, Procyon.Mono y estéreo.Sample format: 4 a 16 bits.Sample rate: 16 KHz, 32 KHz.Bucles.

Sonido sintetizado (SSEQ).Partitura: SSEQ.Notas musicales: SBNK, SWAR.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 29 / 36

Textos Imágenes Tipografías y audios Reto

Tipografías y audios

Audios

Sound DATa (.sdat)

Sonido digitalizado (STRM).PCM, ADPCM, Procyon.Mono y estéreo.Sample format: 4 a 16 bits.Sample rate: 16 KHz, 32 KHz.Bucles.

Sonido sintetizado (SSEQ).Partitura: SSEQ.Notas musicales: SBNK, SWAR.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 29 / 36

Textos Imágenes Tipografías y audios Reto

Tipografías y audios

Audios

Sound DATa (.sdat)

Sonido digitalizado (STRM).PCM, ADPCM, Procyon.Mono y estéreo.Sample format: 4 a 16 bits.Sample rate: 16 KHz, 32 KHz.Bucles.

Sonido sintetizado (SSEQ).Partitura: SSEQ.Notas musicales: SBNK, SWAR.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 29 / 36

Textos Imágenes Tipografías y audios Reto

Tipografías y audios

Audios

Sound DATa (.sdat)

Sonido digitalizado (STRM).PCM, ADPCM, Procyon.Mono y estéreo.Sample format: 4 a 16 bits.Sample rate: 16 KHz, 32 KHz.Bucles.

Sonido sintetizado (SSEQ).Partitura: SSEQ.Notas musicales: SBNK, SWAR.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 29 / 36

Textos Imágenes Tipografías y audios Reto

Tipografías y audios

Audios

Sound DATa (.sdat)

Sonido digitalizado (STRM).PCM, ADPCM, Procyon.Mono y estéreo.Sample format: 4 a 16 bits.Sample rate: 16 KHz, 32 KHz.Bucles.

Sonido sintetizado (SSEQ).Partitura: SSEQ.Notas musicales: SBNK, SWAR.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 29 / 36

Textos Imágenes Tipografías y audios Reto

Tipografías y audios

Audios

Sound DATa (.sdat)

Sonido digitalizado (STRM).PCM, ADPCM, Procyon.Mono y estéreo.Sample format: 4 a 16 bits.Sample rate: 16 KHz, 32 KHz.Bucles.

Sonido sintetizado (SSEQ).Partitura: SSEQ.Notas musicales: SBNK, SWAR.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 29 / 36

Textos Imágenes Tipografías y audios Reto

Tipografías y audios

Audios

Sound DATa (.sdat)

Sonido digitalizado (STRM).PCM, ADPCM, Procyon.Mono y estéreo.Sample format: 4 a 16 bits.Sample rate: 16 KHz, 32 KHz.Bucles.

Sonido sintetizado (SSEQ).Partitura: SSEQ.Notas musicales: SBNK, SWAR.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 29 / 36

Textos Imágenes Tipografías y audios Reto

Tipografías y audios

Audios

Sound DATa (.sdat)

Sonido digitalizado (STRM).PCM, ADPCM, Procyon.Mono y estéreo.Sample format: 4 a 16 bits.Sample rate: 16 KHz, 32 KHz.Bucles.

Sonido sintetizado (SSEQ).Partitura: SSEQ.Notas musicales: SBNK, SWAR.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 29 / 36

Textos Imágenes Tipografías y audios Reto

Tipografías y audios

Audios

Sound DATa (.sdat)

Sonido digitalizado (STRM).PCM, ADPCM, Procyon.Mono y estéreo.Sample format: 4 a 16 bits.Sample rate: 16 KHz, 32 KHz.Bucles.

Sonido sintetizado (SSEQ).Partitura: SSEQ.Notas musicales: SBNK, SWAR.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 29 / 36

Textos Imágenes Tipografías y audios Reto

Reto

CHALLENGE TIME!

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 30 / 36

Textos Imágenes Tipografías y audios Reto

The Legend of Zelda: Phantom Hourglass

Contenido sorpresa

¿/Test/picture.narc? ¿/Test/BgMap.narc?

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 31 / 36

Textos Imágenes Tipografías y audios Reto

The Legend of Zelda: Phantom Hourglass

Contenido sorpresa

¿/Test/picture.narc?

¿/Test/BgMap.narc?

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 31 / 36

Textos Imágenes Tipografías y audios Reto

The Legend of Zelda: Phantom Hourglass

Contenido sorpresa

¿/Test/picture.narc?

¿/Test/BgMap.narc?

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 31 / 36

Textos Imágenes Tipografías y audios Reto

The Legend of Zelda: Phantom Hourglass

Contenido sorpresa

¿/Test/picture.narc? ¿/Test/BgMap.narc?

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 31 / 36

Textos Imágenes Tipografías y audios Reto

The Legend of Zelda: Phantom Hourglass

Contenido sorpresa

¿/Test/picture.narc? ¿/Test/BgMap.narc?

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 31 / 36

Textos Imágenes Tipografías y audios Reto

The Legend of Zelda: Phantom Hourglass

Historia

Modi�car cuarto diálogo.Modi�car imagen.

Modi�car tipografía.Modi�car mapa.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 32 / 36

Textos Imágenes Tipografías y audios Reto

The Legend of Zelda: Phantom Hourglass

Historia

Modi�car cuarto diálogo.Modi�car imagen.

Modi�car tipografía.Modi�car mapa.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 32 / 36

Textos Imágenes Tipografías y audios Reto

The Legend of Zelda: Phantom Hourglass

Historia

Modi�car cuarto diálogo.Modi�car imagen.

Modi�car tipografía.Modi�car mapa.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 32 / 36

Textos Imágenes Tipografías y audios Reto

The Legend of Zelda: Phantom Hourglass

Historia

Modi�car cuarto diálogo.Modi�car imagen.

Modi�car tipografía.Modi�car mapa.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 32 / 36

Textos Imágenes Tipografías y audios Reto

The Legend of Zelda: Phantom Hourglass

Historia: Punteros

Modi�car cuarto diálogo.Ruta: /Spanish/Message/demo.bmg.Punteros en la sección INF1 (cabecera: 16 B).Hay 0x08 bytes por texto.Primeros 0x04 bytes es el puntero.Puntero i: OffsetINF1 + 16+ i ∗ 8 = 48h.Punteros relativos a 0x0AE8.Ignorar 6 bytes después de 001Ah.Añadir pausa al �nal con:1A 00 08 01 0E 00 7D 00.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 33 / 36

Textos Imágenes Tipografías y audios Reto

The Legend of Zelda: Phantom Hourglass

Historia: Imágenes

Modi�car imagenRuta: /Event/Kamishibai/kami1/kami1-01.

Seleccionar Replace palette.

Importar imagen con mismas dimensiones:Ancho: 256 píxeles.Alto: 192 píxeles.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 34 / 36

Textos Imágenes Tipografías y audios Reto

The Legend of Zelda: Phantom Hourglass

Historia: Tipografía

Modi�car tipografíaCambiar primer texto por:∫2xdx = x2 + K

Tipografía: /Font/zeldaDS_15.nftr.

Reemplazar caracteres japoneses por:∫y 2

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 35 / 36

Textos Imágenes Tipografías y audios Reto

The Legend of Zelda: Phantom Hourglass

Mapas

Modi�car mapaRuta: /Map/isle_main/

course.bin: texturas del mapa.

map00.bin: mapa principal.isle_main_00.nsbmd: terreno 3D.isle_main_00.zmb: Mapa de colisiones yobjetos.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 36 / 36

Textos Imágenes Tipografías y audios Reto

The Legend of Zelda: Phantom Hourglass

Mapas

Modi�car mapaRuta: /Map/isle_main/

course.bin: texturas del mapa.

map00.bin: mapa principal.isle_main_00.nsbmd: terreno 3D.isle_main_00.zmb: Mapa de colisiones yobjetos.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 36 / 36

Textos Imágenes Tipografías y audios Reto

The Legend of Zelda: Phantom Hourglass

Mapas

Modi�car mapaRuta: /Map/isle_main/

course.bin: texturas del mapa.

map00.bin: mapa principal.isle_main_00.nsbmd: terreno 3D.isle_main_00.zmb: Mapa de colisiones yobjetos.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 36 / 36

Textos Imágenes Tipografías y audios Reto

The Legend of Zelda: Phantom Hourglass

Mapas

Modi�car mapaRuta: /Map/isle_main/

course.bin: texturas del mapa.

map00.bin: mapa principal.isle_main_00.nsbmd: terreno 3D.isle_main_00.zmb: Mapa de colisiones yobjetos.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 36 / 36

Textos Imágenes Tipografías y audios Reto

The Legend of Zelda: Phantom Hourglass

Mapas

Modi�car mapaRuta: /Map/isle_main/

course.bin: texturas del mapa.

map00.bin: mapa principal.isle_main_00.nsbmd: terreno 3D.isle_main_00.zmb: Mapa de colisiones yobjetos.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 36 / 36

Textos Imágenes Tipografías y audios Reto

The Legend of Zelda: Phantom Hourglass

Mapas

Modi�car mapaSección BMOR: mapa de colisiones.Sección PRAW: salidas del mapa.Sección BOPM: objetos del terreno:

0x1C bytes por objeto.Primeros dos bytes: tipo de objeto.Siguientes dos bytes: posición X e Y.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 36 / 36

Textos Imágenes Tipografías y audios Reto

The Legend of Zelda: Phantom Hourglass

Mapas

Modi�car mapaSección BMOR: mapa de colisiones.Sección PRAW: salidas del mapa.Sección BOPM: objetos del terreno:

0x1C bytes por objeto.Primeros dos bytes: tipo de objeto.Siguientes dos bytes: posición X e Y.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 36 / 36

Textos Imágenes Tipografías y audios Reto

The Legend of Zelda: Phantom Hourglass

Mapas

Modi�car mapaSección BMOR: mapa de colisiones.Sección PRAW: salidas del mapa.Sección BOPM: objetos del terreno:

0x1C bytes por objeto.Primeros dos bytes: tipo de objeto.Siguientes dos bytes: posición X e Y.

Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Abril de 2016 36 / 36

top related