Upload
benito-palacios-sanchez
View
299
Download
3
Embed Size (px)
Citation preview
Rama estudiantil de IEEE en la UGR
Introducción al ROM Hacking:Formatos comunes en juegos
Benito Palacios Sá[email protected]
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