SlideShare una empresa de Scribd logo
Rama estudiantil de IEEE en la UGR
Introducción al ROM Hacking:
Primeros pasos
Benito Palacios
benito.palaciossanchez.es@ieee.org
24 de marzo de 2017
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Sobre mi...
¿Quién soy?
Benito Palacios
@pleonex
Graduado en Ingeniería de Tecnologías de Telecomunicación
Trabajo Fin de Grado sobre seguridad en videojuegos
Miembro fundador de IEEE Student Branch of Granada
>7 años en el mundo del ROM Hacking
Miembro de GradienWords
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 2 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Sobre mi...
¿Quién soy?
Benito Palacios
@pleonex
Graduado en Ingeniería de Tecnologías de Telecomunicación
Trabajo Fin de Grado sobre seguridad en videojuegos
Miembro fundador de IEEE Student Branch of Granada
>7 años en el mundo del ROM Hacking
Miembro de GradienWords
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 2 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Sobre mi...
¿Quién soy?
Benito Palacios
@pleonex
Graduado en Ingeniería de Tecnologías de Telecomunicación
Trabajo Fin de Grado sobre seguridad en videojuegos
Miembro fundador de IEEE Student Branch of Granada
>7 años en el mundo del ROM Hacking
Miembro de GradienWords
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 2 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Sobre mi...
¿Quién soy?
Benito Palacios
@pleonex
Graduado en Ingeniería de Tecnologías de Telecomunicación
Trabajo Fin de Grado sobre seguridad en videojuegos
Miembro fundador de IEEE Student Branch of Granada
>7 años en el mundo del ROM Hacking
Miembro de GradienWords
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 2 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Sobre mi...
¿Quién soy?
Benito Palacios
@pleonex
Graduado en Ingeniería de Tecnologías de Telecomunicación
Trabajo Fin de Grado sobre seguridad en videojuegos
Miembro fundador de IEEE Student Branch of Granada
>7 años en el mundo del ROM Hacking
Miembro de GradienWords
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 2 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Mis proyectos
Tinke
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 3 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Mis proyectos
Ninokuni: El Mago de las Tinieblas
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 4 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Mis proyectos
Fan traducciones
Pokémon Conquest
Final Fantasy: Four Heroes
Profesor Layton: London Life
Shining Force Feather
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 5 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Mis proyectos
Fan traducciones
Pokémon Conquest
Final Fantasy: Four Heroes
Profesor Layton: London Life
Shining Force Feather
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 5 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Mis proyectos
Fan traducciones
Pokémon Conquest
Final Fantasy: Four Heroes
Profesor Layton: London Life
Shining Force Feather
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 5 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Mis proyectos
Fan traducciones
Pokémon Conquest
Final Fantasy: Four Heroes
Profesor Layton: London Life
Shining Force Feather
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 5 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
Érase una vez...
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 6 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
¿Qué es un fichero?
¿ ?
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 7 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
La parte cruda de los archivos
Figura: BMP visto con editor hexadecimal HxD
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 8 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
Especificaciones (BMP)
Posición Tamaño Descripción
Cabecera estándar
0x00 0x02 Magic stamp: BM
0x02 0x04 Tamaño del fichero
0x06 0x04 Reservado
0x0A 0x04 Puntero a los datos de la imagen
Cabecera DIB
0x00 0x04 Tamaño de esta cabecera
0x04 0x04 Ancho de la imagen
0x06 0x04 Alto de la imagen
0x08 0x02 Número de planos de color (1)
0x0A 0x02 Número de bits por píxel
Paleta de colores
Píxeles
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 9 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
Especificaciones (BMP)
1 Cabecera estándar
1 Magic stamp
2 Tamaño fichero
3 Reservado
4 Puntero datos
2 Cabecera DIB
1 Tamaño DIB
2 Ancho
3 Alto
4 Planos de color
5 BPP
6 Meta-datos
3 Paleta
4 Píxeles
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
Especificaciones (BMP)
1 Cabecera estándar
1 Magic stamp
2 Tamaño fichero
3 Reservado
4 Puntero datos
2 Cabecera DIB
1 Tamaño DIB
2 Ancho
3 Alto
4 Planos de color
5 BPP
6 Meta-datos
3 Paleta
4 Píxeles
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
Especificaciones (BMP)
1 Cabecera estándar
1 Magic stamp
2 Tamaño fichero
3 Reservado
4 Puntero datos
2 Cabecera DIB
1 Tamaño DIB
2 Ancho
3 Alto
4 Planos de color
5 BPP
6 Meta-datos
3 Paleta
4 Píxeles
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
Especificaciones (BMP)
1 Cabecera estándar
1 Magic stamp
2 Tamaño fichero
3 Reservado
4 Puntero datos
2 Cabecera DIB
1 Tamaño DIB
2 Ancho
3 Alto
4 Planos de color
5 BPP
6 Meta-datos
3 Paleta
4 Píxeles
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
Especificaciones (BMP)
1 Cabecera estándar
1 Magic stamp
2 Tamaño fichero
3 Reservado
4 Puntero datos
2 Cabecera DIB
1 Tamaño DIB
2 Ancho
3 Alto
4 Planos de color
5 BPP
6 Meta-datos
3 Paleta
4 Píxeles
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
Especificaciones (BMP)
1 Cabecera estándar
1 Magic stamp
2 Tamaño fichero
3 Reservado
4 Puntero datos
2 Cabecera DIB
1 Tamaño DIB
2 Ancho
3 Alto
4 Planos de color
5 BPP
6 Meta-datos
3 Paleta
4 Píxeles
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
Especificaciones (BMP)
1 Cabecera estándar
1 Magic stamp
2 Tamaño fichero
3 Reservado
4 Puntero datos
2 Cabecera DIB
1 Tamaño DIB
2 Ancho
3 Alto
4 Planos de color
5 BPP
6 Meta-datos
3 Paleta
4 Píxeles
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
Especificaciones (BMP)
1 Cabecera estándar
1 Magic stamp
2 Tamaño fichero
3 Reservado
4 Puntero datos
2 Cabecera DIB
1 Tamaño DIB
2 Ancho
3 Alto
4 Planos de color
5 BPP
6 Meta-datos
3 Paleta
4 Píxeles
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
Especificaciones (BMP)
1 Cabecera estándar
1 Magic stamp
2 Tamaño fichero
3 Reservado
4 Puntero datos
2 Cabecera DIB
1 Tamaño DIB
2 Ancho
3 Alto
4 Planos de color
5 BPP
6 Meta-datos
3 Paleta
4 Píxeles
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
Especificaciones (BMP)
1 Cabecera estándar
1 Magic stamp
2 Tamaño fichero
3 Reservado
4 Puntero datos
2 Cabecera DIB
1 Tamaño DIB
2 Ancho
3 Alto
4 Planos de color
5 BPP
6 Meta-datos
3 Paleta
4 Píxeles
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
Especificaciones (BMP)
1 Cabecera estándar
1 Magic stamp
2 Tamaño fichero
3 Reservado
4 Puntero datos
2 Cabecera DIB
1 Tamaño DIB
2 Ancho
3 Alto
4 Planos de color
5 BPP
6 Meta-datos
3 Paleta
4 Píxeles
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
Especificaciones (BMP)
1 Cabecera estándar
1 Magic stamp
2 Tamaño fichero
3 Reservado
4 Puntero datos
2 Cabecera DIB
1 Tamaño DIB
2 Ancho
3 Alto
4 Planos de color
5 BPP
6 Meta-datos
3 Paleta
4 Píxeles
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
Especificaciones (BMP)
1 Cabecera estándar
1 Magic stamp
2 Tamaño fichero
3 Reservado
4 Puntero datos
2 Cabecera DIB
1 Tamaño DIB
2 Ancho
3 Alto
4 Planos de color
5 BPP
6 Meta-datos
3 Paleta
4 Píxeles
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
Especificaciones (BMP)
1 Cabecera estándar
1 Magic stamp
2 Tamaño fichero
3 Reservado
4 Puntero datos
2 Cabecera DIB
1 Tamaño DIB
2 Ancho
3 Alto
4 Planos de color
5 BPP
6 Meta-datos
3 Paleta
4 Píxeles
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
¿Qué hay dentro de un juego?
¿ ?
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 11 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
¿Qué hay dentro de un juego?
¿ ? →
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 11 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
La parte cruda de un juego
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 12 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
¿Y ahora? ¿Y la especificación?
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 13 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
ROM Hacking
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 14 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
ROM Hacking
Propósito:
Fan traducciones
Mods
Extraer recursos
Curiosidad
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 15 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
ROM Hacking
Propósito:
Fan traducciones
Mods
Extraer recursos
Curiosidad
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 15 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
ROM Hacking
Propósito:
Fan traducciones
Mods
Extraer recursos
Curiosidad
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 15 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
ROM Hacking
Propósito:
Fan traducciones
Mods
Extraer recursos
Curiosidad
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 15 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
¿Qué es ROM Hacking?
ROM Hacking
Propósito:
Fan traducciones
Mods
Extraer recursos
Curiosidad
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 15 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Temario
Contenido del curso
IEEEsbUGR ROM Hacking Group
1 Introducción al ROM Hacking
1 Introducción
2 Hello World!
3 Reto 1
4 Textos
5 Imágenes
6 Media
7 Reto 2
2 Proyecto
3 Presentación y taller
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 16 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Hello World!
ROM HACKING TIME!
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 17 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Conceptos
Números hexadecimales
Decimal: 0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
Binario: 0 1
0 1 10 11 100 101 110 111 1000 ...
0 1 2 3 4 5 6 7 8
Octal: 0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7 10 11 12 13 14 ...
0 1 2 3 4 5 6 7 8 9 10 11 12
Hexadecimal: 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 ...
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 18 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Conceptos
Números hexadecimales
Decimal: 0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
Binario: 0 1
0 1 10 11 100 101 110 111 1000 ...
0 1 2 3 4 5 6 7 8
Octal: 0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7 10 11 12 13 14 ...
0 1 2 3 4 5 6 7 8 9 10 11 12
Hexadecimal: 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 ...
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 18 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Conceptos
Números hexadecimales
Decimal: 0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
Binario: 0 1
0 1 10 11 100 101 110 111 1000 ...
0 1 2 3 4 5 6 7 8
Octal: 0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7 10 11 12 13 14 ...
0 1 2 3 4 5 6 7 8 9 10 11 12
Hexadecimal: 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 ...
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 18 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Conceptos
Números hexadecimales
Decimal: 0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
Binario: 0 1
0 1 10 11 100 101 110 111 1000 ...
0 1 2 3 4 5 6 7 8
Octal: 0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7 10 11 12 13 14 ...
0 1 2 3 4 5 6 7 8 9 10 11 12
Hexadecimal: 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 ...
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 18 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Conceptos
Números hexadecimales
Decimal: 0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
Binario: 0 1
0 1 10 11 100 101 110 111 1000 ...
0 1 2 3 4 5 6 7 8
Octal: 0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7 10 11 12 13 14 ...
0 1 2 3 4 5 6 7 8 9 10 11 12
Hexadecimal: 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 ...
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 18 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Conceptos
Números hexadecimales
Prefijo 0x o sufijo h
0xA, FBh, 0xCA, FEh
Fácil representación de enteros:
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 19 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Conceptos
Números hexadecimales
Prefijo 0x o sufijo h
0xA, FBh, 0xCA, FEh
Fácil representación de enteros:
# Rango Ejemplo Bytes Bits Otros nombres
1 [0, 15] 0xC ½ 4
2 [0, 255] 0xC0 1 8 byte
4 [0, 65,535] 0x0200 2 16 ushort, WORD
8 [0, 4,294,967,295] 0xB7000000 4 32 uint, DWORD
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 19 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Editar juegos
Modificando textos
1 Localizar texto a modificar
2 Abrir juego en Tinke
3 Localizar textos
4 Extraer archivo
5 Modificar con editor
6 Importar archivo
7 Generar ROM
8 Probar en DeSmuME
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 20 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Editar juegos
Modificando textos
1 Localizar texto a modificar
2 Abrir juego en Tinke
3 Localizar textos
4 Extraer archivo
5 Modificar con editor
6 Importar archivo
7 Generar ROM
8 Probar en DeSmuME
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 20 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Editar juegos
Modificando textos
1 Localizar texto a modificar
2 Abrir juego en Tinke
3 Localizar textos
4 Extraer archivo
5 Modificar con editor
6 Importar archivo
7 Generar ROM
8 Probar en DeSmuME
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 20 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Editar juegos
Modificando textos
1 Localizar texto a modificar
2 Abrir juego en Tinke
3 Localizar textos
4 Extraer archivo
5 Modificar con editor
6 Importar archivo
7 Generar ROM
8 Probar en DeSmuME
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 20 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Editar juegos
Modificando textos
1 Localizar texto a modificar
2 Abrir juego en Tinke
3 Localizar textos
4 Extraer archivo
5 Modificar con editor
6 Importar archivo
7 Generar ROM
8 Probar en DeSmuME
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 20 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Editar juegos
Modificando textos
1 Localizar texto a modificar
2 Abrir juego en Tinke
3 Localizar textos
4 Extraer archivo
5 Modificar con editor
6 Importar archivo
7 Generar ROM
8 Probar en DeSmuME
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 20 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Editar juegos
Modificando textos
1 Localizar texto a modificar
2 Abrir juego en Tinke
3 Localizar textos
4 Extraer archivo
5 Modificar con editor
6 Importar archivo
7 Generar ROM
8 Probar en DeSmuME
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 20 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Editar juegos
Modificando textos
1 Localizar texto a modificar
2 Abrir juego en Tinke
3 Localizar textos
4 Extraer archivo
5 Modificar con editor
6 Importar archivo
7 Generar ROM
8 Probar en DeSmuME
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 20 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Publicar cambios
Parches
Solo contienen las modificaciones
No subir el juego modificado
Tamaño pequeño
Formatos comunes: xDelta
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 21 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Publicar cambios
Parches
Solo contienen las modificaciones
No subir el juego modificado
Tamaño pequeño
Formatos comunes: xDelta
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 21 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Publicar cambios
Parches
Solo contienen las modificaciones
No subir el juego modificado
Tamaño pequeño
Formatos comunes: xDelta
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 21 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Publicar cambios
Parches
Solo contienen las modificaciones
No subir el juego modificado
Tamaño pequeño
Formatos comunes: xDelta
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 21 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Programas de edición
Pokémon: Advanced Map
Proyecto: http://ampage.no-ip.info/
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 22 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Programas de edición
Pokémon: Spiky’s DS Map Editor
Proyecto: https://github.com/MarcRiera/SDSME
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 23 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Programas de edición
NSMB Editor
Proyecto: https://github.com/Dirbaio/NSMB-Editor
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 24 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Programas de edición
Super Mario 64 Editor
Descarga: http://www.romhacking.net/utilities/764
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 25 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Programas de edición
Ninokuni
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 26 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Programas de edición
Ninokuni
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 26 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Programas de edición
Ninokuni
→
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 26 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Programas de edición
Ninokuni
→
Proyecto: http://gradienwords.com
GitHub: https://github.com/pleonex/Ninokuni
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 26 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Reto 1
CHALLENGE TIME!
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 27 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Puzles en Profesor Layton
Objetivo
Modifica un puzle
Descripción (qtext)
Pistas (qtext)
Solución (script/qscript)
Confirmación (qtext)
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 28 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Puzles en Profesor Layton
Objetivo
Modifica un puzle
Descripción (qtext)
Pistas (qtext)
Solución (script/qscript)
Confirmación (qtext)
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 28 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Puzles en Profesor Layton
Objetivo
Modifica un puzle
Descripción (qtext)
Pistas (qtext)
Solución (script/qscript)
Confirmación (qtext)
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 28 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Puzles en Profesor Layton
Objetivo
Modifica un puzle
Descripción (qtext)
Pistas (qtext)
Solución (script/qscript)
Confirmación (qtext)
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 28 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Naturaleza de los textos
¿Cómo guardamos texto de forma digital?
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 29 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Codificaciones
Codificación de caracteres
Es el método que permite convertir un carácter de un
lenguaje natural en un símbolo de otro sistema de
representación aplicando reglas de codificación. [Wikipedia]
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 30 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Codificaciones
Codificación de caracteres
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 30 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Codificaciones
ASCII
Codifica caracteres del alfabeto latino en 7 bits.
↓
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 31 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Codificaciones
Latin-1 (ISO 8859-1)
Codificación extendida de ASCII. Utiliza 8 bits añadiendo 128
caracteres necesarios para las lenguas europeas.
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 32 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Codificaciones
Unicode
Estándar universal de codificación de caracteres para la
mayoría de lenguas (incluidas las muertas). La última versión
8.0 incluye 120.737 caracteres.
Unicode es solo una tabla, no especifica la codificación.
Codificaciones para Unicode:
UTF-8: codificación de 8 bits de longitud variable.
’A’ = 41h, ’ ’ = F0 A0 9C 8E
UTF-16: codificación de 16 bits de longitud variable.
’A’ = 0041, ’ ’ = D841 DF0E
UTF-32: codificación de 32 bits de longitud fija.
’A’ = 00000041, ’ ’ = 0002070E
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 33 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Codificaciones
Unicode
Estándar universal de codificación de caracteres para la
mayoría de lenguas (incluidas las muertas). La última versión
8.0 incluye 120.737 caracteres.
Unicode es solo una tabla, no especifica la codificación.
Codificaciones para Unicode:
UTF-8: codificación de 8 bits de longitud variable.
’A’ = 41h, ’ ’ = F0 A0 9C 8E
UTF-16: codificación de 16 bits de longitud variable.
’A’ = 0041, ’ ’ = D841 DF0E
UTF-32: codificación de 32 bits de longitud fija.
’A’ = 00000041, ’ ’ = 0002070E
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 33 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Codificaciones
Unicode
Estándar universal de codificación de caracteres para la
mayoría de lenguas (incluidas las muertas). La última versión
8.0 incluye 120.737 caracteres.
Unicode es solo una tabla, no especifica la codificación.
Codificaciones para Unicode:
UTF-8: codificación de 8 bits de longitud variable.
’A’ = 41h, ’ ’ = F0 A0 9C 8E
UTF-16: codificación de 16 bits de longitud variable.
’A’ = 0041, ’ ’ = D841 DF0E
UTF-32: codificación de 32 bits de longitud fija.
’A’ = 00000041, ’ ’ = 0002070E
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 33 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Codificaciones
Unicode
Estándar universal de codificación de caracteres para la
mayoría de lenguas (incluidas las muertas). La última versión
8.0 incluye 120.737 caracteres.
Unicode es solo una tabla, no especifica la codificación.
Codificaciones para Unicode:
UTF-8: codificación de 8 bits de longitud variable.
’A’ = 41h, ’ ’ = F0 A0 9C 8E
UTF-16: codificación de 16 bits de longitud variable.
’A’ = 0041, ’ ’ = D841 DF0E
UTF-32: codificación de 32 bits de longitud fija.
’A’ = 00000041, ’ ’ = 0002070E
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 33 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Codificaciones
Unicode
Estándar universal de codificación de caracteres para la
mayoría de lenguas (incluidas las muertas). La última versión
8.0 incluye 120.737 caracteres.
Unicode es solo una tabla, no especifica la codificación.
Codificaciones para Unicode:
UTF-8: codificación de 8 bits de longitud variable.
’A’ = 41h, ’ ’ = F0 A0 9C 8E
UTF-16: codificación de 16 bits de longitud variable.
’A’ = 0041, ’ ’ = D841 DF0E
UTF-32: codificación de 32 bits de longitud fija.
’A’ = 00000041, ’ ’ = 0002070E
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 33 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Codificaciones
Unicode
Estándar universal de codificación de caracteres para la
mayoría de lenguas (incluidas las muertas). La última versión
8.0 incluye 120.737 caracteres.
Unicode es solo una tabla, no especifica la codificación.
Codificaciones para Unicode:
UTF-8: codificación de 8 bits de longitud variable.
’A’ = 41h, ’ ’ = F0 A0 9C 8E
UTF-16: codificación de 16 bits de longitud variable.
’A’ = 0041, ’ ’ = D841 DF0E
UTF-32: codificación de 32 bits de longitud fija.
’A’ = 00000041, ’ ’ = 0002070E
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 33 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Codificaciones
Shift Jis (CP 932)
Codificación de longitud variable (1 o 2 bytes) para caracteres
japoneses. Incluye ASCII.
Figura: Tabla para caracteres con primer byte 0x82
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 34 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Codificaciones
Ejemplos en archivos
¿?
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 35 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Codificaciones
Ejemplos en archivos
UTF-16
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 35 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Codificaciones
Ejemplos en archivos
UTF-16
¿?
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 35 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Codificaciones
Ejemplos en archivos
UTF-16
Shift Jis
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 35 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Codificaciones
Tablas
Algunos juegos usan codificaciones propietarias...
... fácil mapeo con la tipografía.
... dificultar el acceso.
Figura: Textos de Pokémon Perla
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 36 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Codificaciones
Tablas
Valor Carácter Valor Carácter Valor Carácter
01A9h ¡ 01ABh ! 01ADh ,
01DEh SP E000h NL 0152h E
0132h H 013Ah P 013Eh T
0145h a 0147h c 0148h d
014Ch h 0150h l 0152h n
0153h o 0156h r 0158h t
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 37 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
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 fichero.
Relativo a la posición actual.
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 38 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
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 fichero.
Relativo a la posición actual.
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 38 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
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 fichero.
Relativo a la posición actual.
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 38 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
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 fichero.
Relativo a la posición actual.
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 38 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Formatos
Punteros (offsets)
Formato BMG
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 39 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Formatos
Punteros (offsets)
Formato BMG
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 39 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Formatos
Punteros (offsets)
Formato BMG
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 39 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Formatos
Punteros (offsets)
Formato BMG
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 39 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Formatos
Punteros (offsets)
Formato BMG
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 39 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Formatos
Punteros (offsets)
Formato BMG
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 39 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Formatos
Punteros (offsets)
Formato BMG
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 39 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Formatos
Punteros (offsets)
Formato BMG
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 39 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Formatos
Punteros (offsets)
Formato BMG
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 39 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Naturaleza de las imágenes
¿Qué necesitamos para formar una imagen?
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 40 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Imágenes de fondo
Partes de una imagen
Una imagen se compone de sucesión de colores (píxeles).
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 41 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Imágenes de fondo
Partes de una imagen
Una imagen se compone de sucesión de colores (píxeles).
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 41 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Imágenes de fondo
Partes de una imagen
Una imagen se compone de sucesión de colores (píxeles).
+
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 41 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Imágenes de fondo
Partes de una imagen
Una imagen se compone de sucesión de colores (píxeles).
+ =
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 41 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
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 define
los colores únicos.
Generalmente: 8 bits/canal
28
= 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 42 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
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 define
los colores únicos.
Generalmente: 8 bits/canal
28
= 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 42 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
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 define
los colores únicos.
Generalmente: 8 bits/canal
28
= 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 42 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
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 define
los colores únicos.
Generalmente: 8 bits/canal
28
= 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 42 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Imágenes de fondo
Paletas
Agrupación de colores. Definen los colores de una imagen. El
primer 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 43 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Imágenes de fondo
Paletas
Agrupación de colores. Definen los colores de una imagen. El
primer 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 43 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Imágenes de fondo
Paletas
Agrupación de colores. Definen los colores de una imagen. El
primer 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 43 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Imágenes de fondo
Paletas
Agrupación de colores. Definen los colores de una imagen. El
primer 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 43 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Imágenes de fondo
Píxeles
La información que guardamos por píxel es la posición en la
paleta de su color.
Codificaciones 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 44 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Imágenes de fondo
Píxeles
La información que guardamos por píxel es la posición en la
paleta de su color.
Codificaciones 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 44 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Imágenes de fondo
Píxeles
La información que guardamos por píxel es la posición en la
paleta de su color.
Codificaciones 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 44 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Imágenes de fondo
Píxeles
La información que guardamos por píxel es la posición en la
paleta de su color.
Codificaciones 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 44 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Imágenes de fondo
Compresión
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 45 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Imágenes de fondo
Compresión
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 45 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Imágenes de fondo
Compresión
+
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 45 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Imágenes de fondo
Compresión
+ =
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 45 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Imágenes de fondo
Compresión
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 45 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Imágenes de fondo
Compresión
→
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 45 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Sprites
Casos de uso
Capas
Animaciones
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 46 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Sprites
Casos de uso
Capas
Animaciones
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 46 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Sprites
Casos de uso
Capas
Animaciones
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 46 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Sprites
Casos de uso
Capas
Animaciones
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 46 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Sprites
Casos de uso
Ahorro de espacio con capas
+ =
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 46 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Sprites
Formatos base
Paleta (.nclr)
+
Tiles (.ncgr)
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 47 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Sprites
Formatos base
Paleta (.nclr)
+
Tiles (.ncgr)
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 47 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Sprites
Celdas
Nitro CElls Resource (.ncer)
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 48 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Sprites
Animaciones
Nitro AnimatioN Resource (.nanr)
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 49 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
3D
Texturas
Nitro TeXture (.nsbtx)
Uso en modelos 3D
Paletas + Tiles
Codificaciones: A3I5, A4I4, A5I3,
4x4 texel
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 50 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
3D
Texturas
Nitro TeXture (.nsbtx)
Uso en modelos 3D
Paletas + Tiles
Codificaciones: A3I5, A4I4, A5I3,
4x4 texel
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 50 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
3D
Texturas
Nitro TeXture (.nsbtx)
Uso en modelos 3D
Paletas + Tiles
Codificaciones: A3I5, A4I4, A5I3,
4x4 texel
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 50 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
3D
Texturas
Nitro TeXture (.nsbtx)
Uso en modelos 3D
Paletas + Tiles
Codificaciones: A3I5, A4I4, A5I3,
4x4 texel
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 50 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
3D
Modelos 3D
Nitro MoDel (.nsbbmd)
Geometría 3D.
Comandos de OpenGL 1.0.
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 51 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
3D
Modelos 3D
Nitro MoDel (.nsbbmd)
Geometría 3D.
Comandos de OpenGL 1.0.
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 51 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
3D
Modelos 3D
Nitro MoDel (.nsbbmd)
Geometría 3D.
Comandos de OpenGL 1.0.
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 51 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Tipografías y audios
Tipografías
Nitro FonT Resource (.nftr)
Una imagen por carácter.
Mapeo binario ↔ imagen.
Tabla + Imágenes.
Útil para reemplazo de
caracteres.
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 52 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Tipografías y audios
Tipografías
Nitro FonT Resource (.nftr)
Una imagen por carácter.
Mapeo binario ↔ imagen.
Tabla + Imágenes.
Útil para reemplazo de
caracteres.
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 52 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Tipografías y audios
Tipografías
Nitro FonT Resource (.nftr)
Una imagen por carácter.
Mapeo binario ↔ imagen.
Tabla + Imágenes.
Útil para reemplazo de
caracteres.
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 52 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Tipografías y audios
Tipografías
Nitro FonT Resource (.nftr)
Una imagen por carácter.
Mapeo binario ↔ imagen.
Tabla + Imágenes.
Útil para reemplazo de
caracteres.
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 52 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 53 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 53 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
Reto 2
CHALLENGE TIME!
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 54 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
The Legend of Zelda: Phantom Hourglass
Contenido sorpresa
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 55 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
The Legend of Zelda: Phantom Hourglass
Contenido sorpresa
¿/Test/picture.narc?
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 55 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
The Legend of Zelda: Phantom Hourglass
Contenido sorpresa
¿/Test/picture.narc?
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 55 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
The Legend of Zelda: Phantom Hourglass
Contenido sorpresa
¿/Test/picture.narc? ¿/Test/BgMap.narc?
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 55 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
The Legend of Zelda: Phantom Hourglass
Contenido sorpresa
¿/Test/picture.narc? ¿/Test/BgMap.narc?
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 55 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
The Legend of Zelda: Phantom Hourglass
Historia
Modificar cuarto diálogo.
Modificar imagen.
Modificar tipografía.
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 56 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
The Legend of Zelda: Phantom Hourglass
Historia
Modificar cuarto diálogo.
Modificar imagen.
Modificar tipografía.
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 56 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
The Legend of Zelda: Phantom Hourglass
Historia
Modificar cuarto diálogo.
Modificar imagen.
Modificar tipografía.
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 56 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
The Legend of Zelda: Phantom Hourglass
Historia: Punteros
Modificar 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 final con:
1A 00 08 01 0E 00 7D 00.
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 57 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
The Legend of Zelda: Phantom Hourglass
Historia: Imágenes
Modificar imagen
Ruta: /Event/Kamishibai/kami1/kami1-01.
Seleccionar Replace palette.
Importar imagen con mismas dimensiones:
Ancho: 256 píxeles.
Alto: 192 píxeles.
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 58 / 59
Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2
The Legend of Zelda: Phantom Hourglass
Historia: Tipografía
Modificar tipografía
Cambiar primer texto por:
2xdx = x2
+ K
Tipografía: /Font/zeldaDS_15.nftr.
Reemplazar caracteres japoneses por: y 2
Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 59 / 59

Más contenido relacionado

Último

OPERACIONPLANTA_CLASE14_CLASE15_BOMBAS_FLOTACIONSELECTIVA.pdf
OPERACIONPLANTA_CLASE14_CLASE15_BOMBAS_FLOTACIONSELECTIVA.pdfOPERACIONPLANTA_CLASE14_CLASE15_BOMBAS_FLOTACIONSELECTIVA.pdf
OPERACIONPLANTA_CLASE14_CLASE15_BOMBAS_FLOTACIONSELECTIVA.pdf
AlejandroContreras470286
 
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdfHITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
GROVER MORENO
 
Voladura de mineria subterránea pppt.ppt
Voladura de mineria subterránea pppt.pptVoladura de mineria subterránea pppt.ppt
Voladura de mineria subterránea pppt.ppt
AldithoPomatay2
 
Ciclo de Otto. Máquinas térmicas para el estudio de la termodinámica química
Ciclo de Otto. Máquinas térmicas para el estudio de la termodinámica químicaCiclo de Otto. Máquinas térmicas para el estudio de la termodinámica química
Ciclo de Otto. Máquinas térmicas para el estudio de la termodinámica química
ycalful01
 
Clase de termodinamica sobre cabios de fase
Clase de termodinamica sobre cabios de faseClase de termodinamica sobre cabios de fase
Clase de termodinamica sobre cabios de fase
EmilyLloydCerda
 
Expo sobre los tipos de transistores, su polaridad, y sus respectivas configu...
Expo sobre los tipos de transistores, su polaridad, y sus respectivas configu...Expo sobre los tipos de transistores, su polaridad, y sus respectivas configu...
Expo sobre los tipos de transistores, su polaridad, y sus respectivas configu...
LUISDAMIANSAMARRONCA
 
choro ciclo de vida anatomía y fisiología
choro ciclo de vida anatomía y fisiologíachoro ciclo de vida anatomía y fisiología
choro ciclo de vida anatomía y fisiología
elvis2000x
 
Organizacion-y-direccion-de-los-centros-de-informatica.pptx
Organizacion-y-direccion-de-los-centros-de-informatica.pptxOrganizacion-y-direccion-de-los-centros-de-informatica.pptx
Organizacion-y-direccion-de-los-centros-de-informatica.pptx
GuillerminaReyesJuar
 
PLANIFICACION INDUSTRIAL ( Gantt-Pert-CPM ).docx
PLANIFICACION INDUSTRIAL ( Gantt-Pert-CPM ).docxPLANIFICACION INDUSTRIAL ( Gantt-Pert-CPM ).docx
PLANIFICACION INDUSTRIAL ( Gantt-Pert-CPM ).docx
Victor Manuel Rivera Guevara
 
A3QUIROZ,MANUEL- Operaciones Basicas- Construccion
A3QUIROZ,MANUEL- Operaciones Basicas- ConstruccionA3QUIROZ,MANUEL- Operaciones Basicas- Construccion
A3QUIROZ,MANUEL- Operaciones Basicas- Construccion
manuelalejandro238
 
ABR-FUNDAMENTOS DEL CALCULO uc 2024 ........
ABR-FUNDAMENTOS DEL CALCULO uc 2024 ........ABR-FUNDAMENTOS DEL CALCULO uc 2024 ........
ABR-FUNDAMENTOS DEL CALCULO uc 2024 ........
IVANBRIANCHOQUEHUANC
 
Edafología - Presentacion Orden Histosoles
Edafología - Presentacion Orden HistosolesEdafología - Presentacion Orden Histosoles
Edafología - Presentacion Orden Histosoles
FacundoPortela1
 
Transistores, relés y optoacopladores, explicación y ejercicios
Transistores, relés y  optoacopladores, explicación y ejerciciosTransistores, relés y  optoacopladores, explicación y ejercicios
Transistores, relés y optoacopladores, explicación y ejercicios
KelinnRiveraa
 
Plan de Desarrollo Urbano de la Municipalidad Provincial de Ilo
Plan de Desarrollo Urbano de la Municipalidad Provincial de IloPlan de Desarrollo Urbano de la Municipalidad Provincial de Ilo
Plan de Desarrollo Urbano de la Municipalidad Provincial de Ilo
AlbertoRiveraPrado
 
Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.
MaraManuelaUrribarri
 
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
CarlitosWay20
 
PLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdf
PLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdfPLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdf
PLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdf
MariaCortezRuiz
 
Vehiculo para niños con paralisis cerebral
Vehiculo para niños con paralisis cerebralVehiculo para niños con paralisis cerebral
Vehiculo para niños con paralisis cerebral
everchanging2020
 
Flujo vehicular en análisis de trafico vial
Flujo vehicular en análisis de trafico vialFlujo vehicular en análisis de trafico vial
Flujo vehicular en análisis de trafico vial
SamuelMendozaS
 
Criterios de la primera y segunda derivada
Criterios de la primera y segunda derivadaCriterios de la primera y segunda derivada
Criterios de la primera y segunda derivada
YoverOlivares
 

Último (20)

OPERACIONPLANTA_CLASE14_CLASE15_BOMBAS_FLOTACIONSELECTIVA.pdf
OPERACIONPLANTA_CLASE14_CLASE15_BOMBAS_FLOTACIONSELECTIVA.pdfOPERACIONPLANTA_CLASE14_CLASE15_BOMBAS_FLOTACIONSELECTIVA.pdf
OPERACIONPLANTA_CLASE14_CLASE15_BOMBAS_FLOTACIONSELECTIVA.pdf
 
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdfHITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
 
Voladura de mineria subterránea pppt.ppt
Voladura de mineria subterránea pppt.pptVoladura de mineria subterránea pppt.ppt
Voladura de mineria subterránea pppt.ppt
 
Ciclo de Otto. Máquinas térmicas para el estudio de la termodinámica química
Ciclo de Otto. Máquinas térmicas para el estudio de la termodinámica químicaCiclo de Otto. Máquinas térmicas para el estudio de la termodinámica química
Ciclo de Otto. Máquinas térmicas para el estudio de la termodinámica química
 
Clase de termodinamica sobre cabios de fase
Clase de termodinamica sobre cabios de faseClase de termodinamica sobre cabios de fase
Clase de termodinamica sobre cabios de fase
 
Expo sobre los tipos de transistores, su polaridad, y sus respectivas configu...
Expo sobre los tipos de transistores, su polaridad, y sus respectivas configu...Expo sobre los tipos de transistores, su polaridad, y sus respectivas configu...
Expo sobre los tipos de transistores, su polaridad, y sus respectivas configu...
 
choro ciclo de vida anatomía y fisiología
choro ciclo de vida anatomía y fisiologíachoro ciclo de vida anatomía y fisiología
choro ciclo de vida anatomía y fisiología
 
Organizacion-y-direccion-de-los-centros-de-informatica.pptx
Organizacion-y-direccion-de-los-centros-de-informatica.pptxOrganizacion-y-direccion-de-los-centros-de-informatica.pptx
Organizacion-y-direccion-de-los-centros-de-informatica.pptx
 
PLANIFICACION INDUSTRIAL ( Gantt-Pert-CPM ).docx
PLANIFICACION INDUSTRIAL ( Gantt-Pert-CPM ).docxPLANIFICACION INDUSTRIAL ( Gantt-Pert-CPM ).docx
PLANIFICACION INDUSTRIAL ( Gantt-Pert-CPM ).docx
 
A3QUIROZ,MANUEL- Operaciones Basicas- Construccion
A3QUIROZ,MANUEL- Operaciones Basicas- ConstruccionA3QUIROZ,MANUEL- Operaciones Basicas- Construccion
A3QUIROZ,MANUEL- Operaciones Basicas- Construccion
 
ABR-FUNDAMENTOS DEL CALCULO uc 2024 ........
ABR-FUNDAMENTOS DEL CALCULO uc 2024 ........ABR-FUNDAMENTOS DEL CALCULO uc 2024 ........
ABR-FUNDAMENTOS DEL CALCULO uc 2024 ........
 
Edafología - Presentacion Orden Histosoles
Edafología - Presentacion Orden HistosolesEdafología - Presentacion Orden Histosoles
Edafología - Presentacion Orden Histosoles
 
Transistores, relés y optoacopladores, explicación y ejercicios
Transistores, relés y  optoacopladores, explicación y ejerciciosTransistores, relés y  optoacopladores, explicación y ejercicios
Transistores, relés y optoacopladores, explicación y ejercicios
 
Plan de Desarrollo Urbano de la Municipalidad Provincial de Ilo
Plan de Desarrollo Urbano de la Municipalidad Provincial de IloPlan de Desarrollo Urbano de la Municipalidad Provincial de Ilo
Plan de Desarrollo Urbano de la Municipalidad Provincial de Ilo
 
Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.
 
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
 
PLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdf
PLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdfPLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdf
PLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdf
 
Vehiculo para niños con paralisis cerebral
Vehiculo para niños con paralisis cerebralVehiculo para niños con paralisis cerebral
Vehiculo para niños con paralisis cerebral
 
Flujo vehicular en análisis de trafico vial
Flujo vehicular en análisis de trafico vialFlujo vehicular en análisis de trafico vial
Flujo vehicular en análisis de trafico vial
 
Criterios de la primera y segunda derivada
Criterios de la primera y segunda derivadaCriterios de la primera y segunda derivada
Criterios de la primera y segunda derivada
 

Destacado

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
Marius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
Expeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
Pixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
marketingartwork
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
Skeleton Technologies
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
SpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
Christy Abraham Joy
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
Vit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
MindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
RachelPearson36
 

Destacado (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

[IEEEsbUGR] Introducción al ROM Hacking

  • 1. Rama estudiantil de IEEE en la UGR Introducción al ROM Hacking: Primeros pasos Benito Palacios benito.palaciossanchez.es@ieee.org 24 de marzo de 2017
  • 2. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Sobre mi... ¿Quién soy? Benito Palacios @pleonex Graduado en Ingeniería de Tecnologías de Telecomunicación Trabajo Fin de Grado sobre seguridad en videojuegos Miembro fundador de IEEE Student Branch of Granada >7 años en el mundo del ROM Hacking Miembro de GradienWords Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 2 / 59
  • 3. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Sobre mi... ¿Quién soy? Benito Palacios @pleonex Graduado en Ingeniería de Tecnologías de Telecomunicación Trabajo Fin de Grado sobre seguridad en videojuegos Miembro fundador de IEEE Student Branch of Granada >7 años en el mundo del ROM Hacking Miembro de GradienWords Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 2 / 59
  • 4. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Sobre mi... ¿Quién soy? Benito Palacios @pleonex Graduado en Ingeniería de Tecnologías de Telecomunicación Trabajo Fin de Grado sobre seguridad en videojuegos Miembro fundador de IEEE Student Branch of Granada >7 años en el mundo del ROM Hacking Miembro de GradienWords Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 2 / 59
  • 5. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Sobre mi... ¿Quién soy? Benito Palacios @pleonex Graduado en Ingeniería de Tecnologías de Telecomunicación Trabajo Fin de Grado sobre seguridad en videojuegos Miembro fundador de IEEE Student Branch of Granada >7 años en el mundo del ROM Hacking Miembro de GradienWords Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 2 / 59
  • 6. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Sobre mi... ¿Quién soy? Benito Palacios @pleonex Graduado en Ingeniería de Tecnologías de Telecomunicación Trabajo Fin de Grado sobre seguridad en videojuegos Miembro fundador de IEEE Student Branch of Granada >7 años en el mundo del ROM Hacking Miembro de GradienWords Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 2 / 59
  • 7. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Mis proyectos Tinke Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 3 / 59
  • 8. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Mis proyectos Ninokuni: El Mago de las Tinieblas Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 4 / 59
  • 9. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Mis proyectos Fan traducciones Pokémon Conquest Final Fantasy: Four Heroes Profesor Layton: London Life Shining Force Feather Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 5 / 59
  • 10. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Mis proyectos Fan traducciones Pokémon Conquest Final Fantasy: Four Heroes Profesor Layton: London Life Shining Force Feather Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 5 / 59
  • 11. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Mis proyectos Fan traducciones Pokémon Conquest Final Fantasy: Four Heroes Profesor Layton: London Life Shining Force Feather Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 5 / 59
  • 12. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Mis proyectos Fan traducciones Pokémon Conquest Final Fantasy: Four Heroes Profesor Layton: London Life Shining Force Feather Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 5 / 59
  • 13. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? Érase una vez... Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 6 / 59
  • 14. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? ¿Qué es un fichero? ¿ ? Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 7 / 59
  • 15. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? La parte cruda de los archivos Figura: BMP visto con editor hexadecimal HxD Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 8 / 59
  • 16. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? Especificaciones (BMP) Posición Tamaño Descripción Cabecera estándar 0x00 0x02 Magic stamp: BM 0x02 0x04 Tamaño del fichero 0x06 0x04 Reservado 0x0A 0x04 Puntero a los datos de la imagen Cabecera DIB 0x00 0x04 Tamaño de esta cabecera 0x04 0x04 Ancho de la imagen 0x06 0x04 Alto de la imagen 0x08 0x02 Número de planos de color (1) 0x0A 0x02 Número de bits por píxel Paleta de colores Píxeles Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 9 / 59
  • 17. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? Especificaciones (BMP) 1 Cabecera estándar 1 Magic stamp 2 Tamaño fichero 3 Reservado 4 Puntero datos 2 Cabecera DIB 1 Tamaño DIB 2 Ancho 3 Alto 4 Planos de color 5 BPP 6 Meta-datos 3 Paleta 4 Píxeles Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
  • 18. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? Especificaciones (BMP) 1 Cabecera estándar 1 Magic stamp 2 Tamaño fichero 3 Reservado 4 Puntero datos 2 Cabecera DIB 1 Tamaño DIB 2 Ancho 3 Alto 4 Planos de color 5 BPP 6 Meta-datos 3 Paleta 4 Píxeles Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
  • 19. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? Especificaciones (BMP) 1 Cabecera estándar 1 Magic stamp 2 Tamaño fichero 3 Reservado 4 Puntero datos 2 Cabecera DIB 1 Tamaño DIB 2 Ancho 3 Alto 4 Planos de color 5 BPP 6 Meta-datos 3 Paleta 4 Píxeles Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
  • 20. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? Especificaciones (BMP) 1 Cabecera estándar 1 Magic stamp 2 Tamaño fichero 3 Reservado 4 Puntero datos 2 Cabecera DIB 1 Tamaño DIB 2 Ancho 3 Alto 4 Planos de color 5 BPP 6 Meta-datos 3 Paleta 4 Píxeles Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
  • 21. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? Especificaciones (BMP) 1 Cabecera estándar 1 Magic stamp 2 Tamaño fichero 3 Reservado 4 Puntero datos 2 Cabecera DIB 1 Tamaño DIB 2 Ancho 3 Alto 4 Planos de color 5 BPP 6 Meta-datos 3 Paleta 4 Píxeles Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
  • 22. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? Especificaciones (BMP) 1 Cabecera estándar 1 Magic stamp 2 Tamaño fichero 3 Reservado 4 Puntero datos 2 Cabecera DIB 1 Tamaño DIB 2 Ancho 3 Alto 4 Planos de color 5 BPP 6 Meta-datos 3 Paleta 4 Píxeles Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
  • 23. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? Especificaciones (BMP) 1 Cabecera estándar 1 Magic stamp 2 Tamaño fichero 3 Reservado 4 Puntero datos 2 Cabecera DIB 1 Tamaño DIB 2 Ancho 3 Alto 4 Planos de color 5 BPP 6 Meta-datos 3 Paleta 4 Píxeles Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
  • 24. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? Especificaciones (BMP) 1 Cabecera estándar 1 Magic stamp 2 Tamaño fichero 3 Reservado 4 Puntero datos 2 Cabecera DIB 1 Tamaño DIB 2 Ancho 3 Alto 4 Planos de color 5 BPP 6 Meta-datos 3 Paleta 4 Píxeles Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
  • 25. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? Especificaciones (BMP) 1 Cabecera estándar 1 Magic stamp 2 Tamaño fichero 3 Reservado 4 Puntero datos 2 Cabecera DIB 1 Tamaño DIB 2 Ancho 3 Alto 4 Planos de color 5 BPP 6 Meta-datos 3 Paleta 4 Píxeles Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
  • 26. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? Especificaciones (BMP) 1 Cabecera estándar 1 Magic stamp 2 Tamaño fichero 3 Reservado 4 Puntero datos 2 Cabecera DIB 1 Tamaño DIB 2 Ancho 3 Alto 4 Planos de color 5 BPP 6 Meta-datos 3 Paleta 4 Píxeles Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
  • 27. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? Especificaciones (BMP) 1 Cabecera estándar 1 Magic stamp 2 Tamaño fichero 3 Reservado 4 Puntero datos 2 Cabecera DIB 1 Tamaño DIB 2 Ancho 3 Alto 4 Planos de color 5 BPP 6 Meta-datos 3 Paleta 4 Píxeles Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
  • 28. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? Especificaciones (BMP) 1 Cabecera estándar 1 Magic stamp 2 Tamaño fichero 3 Reservado 4 Puntero datos 2 Cabecera DIB 1 Tamaño DIB 2 Ancho 3 Alto 4 Planos de color 5 BPP 6 Meta-datos 3 Paleta 4 Píxeles Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
  • 29. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? Especificaciones (BMP) 1 Cabecera estándar 1 Magic stamp 2 Tamaño fichero 3 Reservado 4 Puntero datos 2 Cabecera DIB 1 Tamaño DIB 2 Ancho 3 Alto 4 Planos de color 5 BPP 6 Meta-datos 3 Paleta 4 Píxeles Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
  • 30. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? Especificaciones (BMP) 1 Cabecera estándar 1 Magic stamp 2 Tamaño fichero 3 Reservado 4 Puntero datos 2 Cabecera DIB 1 Tamaño DIB 2 Ancho 3 Alto 4 Planos de color 5 BPP 6 Meta-datos 3 Paleta 4 Píxeles Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 10 / 59
  • 31. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? ¿Qué hay dentro de un juego? ¿ ? Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 11 / 59
  • 32. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? ¿Qué hay dentro de un juego? ¿ ? → Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 11 / 59
  • 33. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? La parte cruda de un juego Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 12 / 59
  • 34. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? ¿Y ahora? ¿Y la especificación? Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 13 / 59
  • 35. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? ROM Hacking Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 14 / 59
  • 36. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? ROM Hacking Propósito: Fan traducciones Mods Extraer recursos Curiosidad Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 15 / 59
  • 37. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? ROM Hacking Propósito: Fan traducciones Mods Extraer recursos Curiosidad Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 15 / 59
  • 38. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? ROM Hacking Propósito: Fan traducciones Mods Extraer recursos Curiosidad Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 15 / 59
  • 39. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? ROM Hacking Propósito: Fan traducciones Mods Extraer recursos Curiosidad Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 15 / 59
  • 40. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 ¿Qué es ROM Hacking? ROM Hacking Propósito: Fan traducciones Mods Extraer recursos Curiosidad Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 15 / 59
  • 41. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Temario Contenido del curso IEEEsbUGR ROM Hacking Group 1 Introducción al ROM Hacking 1 Introducción 2 Hello World! 3 Reto 1 4 Textos 5 Imágenes 6 Media 7 Reto 2 2 Proyecto 3 Presentación y taller Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 16 / 59
  • 42. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Hello World! ROM HACKING TIME! Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 17 / 59
  • 43. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Conceptos Números hexadecimales Decimal: 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 10 11 12 13 ... Binario: 0 1 0 1 10 11 100 101 110 111 1000 ... 0 1 2 3 4 5 6 7 8 Octal: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 10 11 12 13 14 ... 0 1 2 3 4 5 6 7 8 9 10 11 12 Hexadecimal: 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 ... 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 18 / 59
  • 44. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Conceptos Números hexadecimales Decimal: 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 10 11 12 13 ... Binario: 0 1 0 1 10 11 100 101 110 111 1000 ... 0 1 2 3 4 5 6 7 8 Octal: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 10 11 12 13 14 ... 0 1 2 3 4 5 6 7 8 9 10 11 12 Hexadecimal: 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 ... 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 18 / 59
  • 45. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Conceptos Números hexadecimales Decimal: 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 10 11 12 13 ... Binario: 0 1 0 1 10 11 100 101 110 111 1000 ... 0 1 2 3 4 5 6 7 8 Octal: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 10 11 12 13 14 ... 0 1 2 3 4 5 6 7 8 9 10 11 12 Hexadecimal: 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 ... 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 18 / 59
  • 46. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Conceptos Números hexadecimales Decimal: 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 10 11 12 13 ... Binario: 0 1 0 1 10 11 100 101 110 111 1000 ... 0 1 2 3 4 5 6 7 8 Octal: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 10 11 12 13 14 ... 0 1 2 3 4 5 6 7 8 9 10 11 12 Hexadecimal: 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 ... 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 18 / 59
  • 47. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Conceptos Números hexadecimales Decimal: 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 10 11 12 13 ... Binario: 0 1 0 1 10 11 100 101 110 111 1000 ... 0 1 2 3 4 5 6 7 8 Octal: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 10 11 12 13 14 ... 0 1 2 3 4 5 6 7 8 9 10 11 12 Hexadecimal: 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 ... 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 18 / 59
  • 48. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Conceptos Números hexadecimales Prefijo 0x o sufijo h 0xA, FBh, 0xCA, FEh Fácil representación de enteros: Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 19 / 59
  • 49. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Conceptos Números hexadecimales Prefijo 0x o sufijo h 0xA, FBh, 0xCA, FEh Fácil representación de enteros: # Rango Ejemplo Bytes Bits Otros nombres 1 [0, 15] 0xC ½ 4 2 [0, 255] 0xC0 1 8 byte 4 [0, 65,535] 0x0200 2 16 ushort, WORD 8 [0, 4,294,967,295] 0xB7000000 4 32 uint, DWORD Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 19 / 59
  • 50. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Editar juegos Modificando textos 1 Localizar texto a modificar 2 Abrir juego en Tinke 3 Localizar textos 4 Extraer archivo 5 Modificar con editor 6 Importar archivo 7 Generar ROM 8 Probar en DeSmuME Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 20 / 59
  • 51. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Editar juegos Modificando textos 1 Localizar texto a modificar 2 Abrir juego en Tinke 3 Localizar textos 4 Extraer archivo 5 Modificar con editor 6 Importar archivo 7 Generar ROM 8 Probar en DeSmuME Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 20 / 59
  • 52. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Editar juegos Modificando textos 1 Localizar texto a modificar 2 Abrir juego en Tinke 3 Localizar textos 4 Extraer archivo 5 Modificar con editor 6 Importar archivo 7 Generar ROM 8 Probar en DeSmuME Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 20 / 59
  • 53. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Editar juegos Modificando textos 1 Localizar texto a modificar 2 Abrir juego en Tinke 3 Localizar textos 4 Extraer archivo 5 Modificar con editor 6 Importar archivo 7 Generar ROM 8 Probar en DeSmuME Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 20 / 59
  • 54. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Editar juegos Modificando textos 1 Localizar texto a modificar 2 Abrir juego en Tinke 3 Localizar textos 4 Extraer archivo 5 Modificar con editor 6 Importar archivo 7 Generar ROM 8 Probar en DeSmuME Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 20 / 59
  • 55. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Editar juegos Modificando textos 1 Localizar texto a modificar 2 Abrir juego en Tinke 3 Localizar textos 4 Extraer archivo 5 Modificar con editor 6 Importar archivo 7 Generar ROM 8 Probar en DeSmuME Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 20 / 59
  • 56. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Editar juegos Modificando textos 1 Localizar texto a modificar 2 Abrir juego en Tinke 3 Localizar textos 4 Extraer archivo 5 Modificar con editor 6 Importar archivo 7 Generar ROM 8 Probar en DeSmuME Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 20 / 59
  • 57. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Editar juegos Modificando textos 1 Localizar texto a modificar 2 Abrir juego en Tinke 3 Localizar textos 4 Extraer archivo 5 Modificar con editor 6 Importar archivo 7 Generar ROM 8 Probar en DeSmuME Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 20 / 59
  • 58. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Publicar cambios Parches Solo contienen las modificaciones No subir el juego modificado Tamaño pequeño Formatos comunes: xDelta Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 21 / 59
  • 59. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Publicar cambios Parches Solo contienen las modificaciones No subir el juego modificado Tamaño pequeño Formatos comunes: xDelta Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 21 / 59
  • 60. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Publicar cambios Parches Solo contienen las modificaciones No subir el juego modificado Tamaño pequeño Formatos comunes: xDelta Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 21 / 59
  • 61. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Publicar cambios Parches Solo contienen las modificaciones No subir el juego modificado Tamaño pequeño Formatos comunes: xDelta Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 21 / 59
  • 62. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Programas de edición Pokémon: Advanced Map Proyecto: http://ampage.no-ip.info/ Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 22 / 59
  • 63. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Programas de edición Pokémon: Spiky’s DS Map Editor Proyecto: https://github.com/MarcRiera/SDSME Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 23 / 59
  • 64. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Programas de edición NSMB Editor Proyecto: https://github.com/Dirbaio/NSMB-Editor Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 24 / 59
  • 65. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Programas de edición Super Mario 64 Editor Descarga: http://www.romhacking.net/utilities/764 Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 25 / 59
  • 66. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Programas de edición Ninokuni Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 26 / 59
  • 67. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Programas de edición Ninokuni Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 26 / 59
  • 68. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Programas de edición Ninokuni → Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 26 / 59
  • 69. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Programas de edición Ninokuni → Proyecto: http://gradienwords.com GitHub: https://github.com/pleonex/Ninokuni Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 26 / 59
  • 70. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Reto 1 CHALLENGE TIME! Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 27 / 59
  • 71. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Puzles en Profesor Layton Objetivo Modifica un puzle Descripción (qtext) Pistas (qtext) Solución (script/qscript) Confirmación (qtext) Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 28 / 59
  • 72. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Puzles en Profesor Layton Objetivo Modifica un puzle Descripción (qtext) Pistas (qtext) Solución (script/qscript) Confirmación (qtext) Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 28 / 59
  • 73. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Puzles en Profesor Layton Objetivo Modifica un puzle Descripción (qtext) Pistas (qtext) Solución (script/qscript) Confirmación (qtext) Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 28 / 59
  • 74. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Puzles en Profesor Layton Objetivo Modifica un puzle Descripción (qtext) Pistas (qtext) Solución (script/qscript) Confirmación (qtext) Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 28 / 59
  • 75. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Naturaleza de los textos ¿Cómo guardamos texto de forma digital? Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 29 / 59
  • 76. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Codificaciones Codificación de caracteres Es el método que permite convertir un carácter de un lenguaje natural en un símbolo de otro sistema de representación aplicando reglas de codificación. [Wikipedia] Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 30 / 59
  • 77. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Codificaciones Codificación de caracteres Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 30 / 59
  • 78. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Codificaciones ASCII Codifica caracteres del alfabeto latino en 7 bits. ↓ Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 31 / 59
  • 79. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Codificaciones Latin-1 (ISO 8859-1) Codificación extendida de ASCII. Utiliza 8 bits añadiendo 128 caracteres necesarios para las lenguas europeas. Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 32 / 59
  • 80. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Codificaciones Unicode Estándar universal de codificación de caracteres para la mayoría de lenguas (incluidas las muertas). La última versión 8.0 incluye 120.737 caracteres. Unicode es solo una tabla, no especifica la codificación. Codificaciones para Unicode: UTF-8: codificación de 8 bits de longitud variable. ’A’ = 41h, ’ ’ = F0 A0 9C 8E UTF-16: codificación de 16 bits de longitud variable. ’A’ = 0041, ’ ’ = D841 DF0E UTF-32: codificación de 32 bits de longitud fija. ’A’ = 00000041, ’ ’ = 0002070E Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 33 / 59
  • 81. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Codificaciones Unicode Estándar universal de codificación de caracteres para la mayoría de lenguas (incluidas las muertas). La última versión 8.0 incluye 120.737 caracteres. Unicode es solo una tabla, no especifica la codificación. Codificaciones para Unicode: UTF-8: codificación de 8 bits de longitud variable. ’A’ = 41h, ’ ’ = F0 A0 9C 8E UTF-16: codificación de 16 bits de longitud variable. ’A’ = 0041, ’ ’ = D841 DF0E UTF-32: codificación de 32 bits de longitud fija. ’A’ = 00000041, ’ ’ = 0002070E Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 33 / 59
  • 82. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Codificaciones Unicode Estándar universal de codificación de caracteres para la mayoría de lenguas (incluidas las muertas). La última versión 8.0 incluye 120.737 caracteres. Unicode es solo una tabla, no especifica la codificación. Codificaciones para Unicode: UTF-8: codificación de 8 bits de longitud variable. ’A’ = 41h, ’ ’ = F0 A0 9C 8E UTF-16: codificación de 16 bits de longitud variable. ’A’ = 0041, ’ ’ = D841 DF0E UTF-32: codificación de 32 bits de longitud fija. ’A’ = 00000041, ’ ’ = 0002070E Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 33 / 59
  • 83. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Codificaciones Unicode Estándar universal de codificación de caracteres para la mayoría de lenguas (incluidas las muertas). La última versión 8.0 incluye 120.737 caracteres. Unicode es solo una tabla, no especifica la codificación. Codificaciones para Unicode: UTF-8: codificación de 8 bits de longitud variable. ’A’ = 41h, ’ ’ = F0 A0 9C 8E UTF-16: codificación de 16 bits de longitud variable. ’A’ = 0041, ’ ’ = D841 DF0E UTF-32: codificación de 32 bits de longitud fija. ’A’ = 00000041, ’ ’ = 0002070E Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 33 / 59
  • 84. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Codificaciones Unicode Estándar universal de codificación de caracteres para la mayoría de lenguas (incluidas las muertas). La última versión 8.0 incluye 120.737 caracteres. Unicode es solo una tabla, no especifica la codificación. Codificaciones para Unicode: UTF-8: codificación de 8 bits de longitud variable. ’A’ = 41h, ’ ’ = F0 A0 9C 8E UTF-16: codificación de 16 bits de longitud variable. ’A’ = 0041, ’ ’ = D841 DF0E UTF-32: codificación de 32 bits de longitud fija. ’A’ = 00000041, ’ ’ = 0002070E Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 33 / 59
  • 85. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Codificaciones Unicode Estándar universal de codificación de caracteres para la mayoría de lenguas (incluidas las muertas). La última versión 8.0 incluye 120.737 caracteres. Unicode es solo una tabla, no especifica la codificación. Codificaciones para Unicode: UTF-8: codificación de 8 bits de longitud variable. ’A’ = 41h, ’ ’ = F0 A0 9C 8E UTF-16: codificación de 16 bits de longitud variable. ’A’ = 0041, ’ ’ = D841 DF0E UTF-32: codificación de 32 bits de longitud fija. ’A’ = 00000041, ’ ’ = 0002070E Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 33 / 59
  • 86. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Codificaciones Shift Jis (CP 932) Codificación de longitud variable (1 o 2 bytes) para caracteres japoneses. Incluye ASCII. Figura: Tabla para caracteres con primer byte 0x82 Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 34 / 59
  • 87. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Codificaciones Ejemplos en archivos ¿? Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 35 / 59
  • 88. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Codificaciones Ejemplos en archivos UTF-16 Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 35 / 59
  • 89. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Codificaciones Ejemplos en archivos UTF-16 ¿? Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 35 / 59
  • 90. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Codificaciones Ejemplos en archivos UTF-16 Shift Jis Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 35 / 59
  • 91. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Codificaciones Tablas Algunos juegos usan codificaciones propietarias... ... fácil mapeo con la tipografía. ... dificultar el acceso. Figura: Textos de Pokémon Perla Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 36 / 59
  • 92. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Codificaciones Tablas Valor Carácter Valor Carácter Valor Carácter 01A9h ¡ 01ABh ! 01ADh , 01DEh SP E000h NL 0152h E 0132h H 013Ah P 013Eh T 0145h a 0147h c 0148h d 014Ch h 0150h l 0152h n 0153h o 0156h r 0158h t Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 37 / 59
  • 93. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 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 fichero. Relativo a la posición actual. Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 38 / 59
  • 94. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 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 fichero. Relativo a la posición actual. Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 38 / 59
  • 95. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 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 fichero. Relativo a la posición actual. Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 38 / 59
  • 96. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 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 fichero. Relativo a la posición actual. Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 38 / 59
  • 97. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Formatos Punteros (offsets) Formato BMG Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 39 / 59
  • 98. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Formatos Punteros (offsets) Formato BMG Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 39 / 59
  • 99. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Formatos Punteros (offsets) Formato BMG Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 39 / 59
  • 100. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Formatos Punteros (offsets) Formato BMG Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 39 / 59
  • 101. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Formatos Punteros (offsets) Formato BMG Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 39 / 59
  • 102. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Formatos Punteros (offsets) Formato BMG Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 39 / 59
  • 103. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Formatos Punteros (offsets) Formato BMG Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 39 / 59
  • 104. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Formatos Punteros (offsets) Formato BMG Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 39 / 59
  • 105. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Formatos Punteros (offsets) Formato BMG Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 39 / 59
  • 106. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Naturaleza de las imágenes ¿Qué necesitamos para formar una imagen? Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 40 / 59
  • 107. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Imágenes de fondo Partes de una imagen Una imagen se compone de sucesión de colores (píxeles). Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 41 / 59
  • 108. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Imágenes de fondo Partes de una imagen Una imagen se compone de sucesión de colores (píxeles). Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 41 / 59
  • 109. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Imágenes de fondo Partes de una imagen Una imagen se compone de sucesión de colores (píxeles). + Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 41 / 59
  • 110. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Imágenes de fondo Partes de una imagen Una imagen se compone de sucesión de colores (píxeles). + = Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 41 / 59
  • 111. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 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 define los colores únicos. Generalmente: 8 bits/canal 28 = 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 42 / 59
  • 112. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 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 define los colores únicos. Generalmente: 8 bits/canal 28 = 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 42 / 59
  • 113. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 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 define los colores únicos. Generalmente: 8 bits/canal 28 = 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 42 / 59
  • 114. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 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 define los colores únicos. Generalmente: 8 bits/canal 28 = 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 42 / 59
  • 115. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Imágenes de fondo Paletas Agrupación de colores. Definen los colores de una imagen. El primer 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 43 / 59
  • 116. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Imágenes de fondo Paletas Agrupación de colores. Definen los colores de una imagen. El primer 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 43 / 59
  • 117. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Imágenes de fondo Paletas Agrupación de colores. Definen los colores de una imagen. El primer 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 43 / 59
  • 118. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Imágenes de fondo Paletas Agrupación de colores. Definen los colores de una imagen. El primer 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 43 / 59
  • 119. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Imágenes de fondo Píxeles La información que guardamos por píxel es la posición en la paleta de su color. Codificaciones 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 44 / 59
  • 120. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Imágenes de fondo Píxeles La información que guardamos por píxel es la posición en la paleta de su color. Codificaciones 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 44 / 59
  • 121. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Imágenes de fondo Píxeles La información que guardamos por píxel es la posición en la paleta de su color. Codificaciones 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 44 / 59
  • 122. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Imágenes de fondo Píxeles La información que guardamos por píxel es la posición en la paleta de su color. Codificaciones 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 44 / 59
  • 123. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Imágenes de fondo Compresión Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 45 / 59
  • 124. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Imágenes de fondo Compresión Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 45 / 59
  • 125. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Imágenes de fondo Compresión + Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 45 / 59
  • 126. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Imágenes de fondo Compresión + = Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 45 / 59
  • 127. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Imágenes de fondo Compresión Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 45 / 59
  • 128. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Imágenes de fondo Compresión → Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 45 / 59
  • 129. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Sprites Casos de uso Capas Animaciones Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 46 / 59
  • 130. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Sprites Casos de uso Capas Animaciones Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 46 / 59
  • 131. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Sprites Casos de uso Capas Animaciones Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 46 / 59
  • 132. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Sprites Casos de uso Capas Animaciones Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 46 / 59
  • 133. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Sprites Casos de uso Ahorro de espacio con capas + = Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 46 / 59
  • 134. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Sprites Formatos base Paleta (.nclr) + Tiles (.ncgr) Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 47 / 59
  • 135. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Sprites Formatos base Paleta (.nclr) + Tiles (.ncgr) Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 47 / 59
  • 136. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Sprites Celdas Nitro CElls Resource (.ncer) Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 48 / 59
  • 137. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Sprites Animaciones Nitro AnimatioN Resource (.nanr) Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 49 / 59
  • 138. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 3D Texturas Nitro TeXture (.nsbtx) Uso en modelos 3D Paletas + Tiles Codificaciones: A3I5, A4I4, A5I3, 4x4 texel Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 50 / 59
  • 139. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 3D Texturas Nitro TeXture (.nsbtx) Uso en modelos 3D Paletas + Tiles Codificaciones: A3I5, A4I4, A5I3, 4x4 texel Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 50 / 59
  • 140. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 3D Texturas Nitro TeXture (.nsbtx) Uso en modelos 3D Paletas + Tiles Codificaciones: A3I5, A4I4, A5I3, 4x4 texel Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 50 / 59
  • 141. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 3D Texturas Nitro TeXture (.nsbtx) Uso en modelos 3D Paletas + Tiles Codificaciones: A3I5, A4I4, A5I3, 4x4 texel Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 50 / 59
  • 142. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 3D Modelos 3D Nitro MoDel (.nsbbmd) Geometría 3D. Comandos de OpenGL 1.0. Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 51 / 59
  • 143. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 3D Modelos 3D Nitro MoDel (.nsbbmd) Geometría 3D. Comandos de OpenGL 1.0. Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 51 / 59
  • 144. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 3D Modelos 3D Nitro MoDel (.nsbbmd) Geometría 3D. Comandos de OpenGL 1.0. Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 51 / 59
  • 145. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Tipografías y audios Tipografías Nitro FonT Resource (.nftr) Una imagen por carácter. Mapeo binario ↔ imagen. Tabla + Imágenes. Útil para reemplazo de caracteres. Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 52 / 59
  • 146. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Tipografías y audios Tipografías Nitro FonT Resource (.nftr) Una imagen por carácter. Mapeo binario ↔ imagen. Tabla + Imágenes. Útil para reemplazo de caracteres. Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 52 / 59
  • 147. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Tipografías y audios Tipografías Nitro FonT Resource (.nftr) Una imagen por carácter. Mapeo binario ↔ imagen. Tabla + Imágenes. Útil para reemplazo de caracteres. Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 52 / 59
  • 148. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Tipografías y audios Tipografías Nitro FonT Resource (.nftr) Una imagen por carácter. Mapeo binario ↔ imagen. Tabla + Imágenes. Útil para reemplazo de caracteres. Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 52 / 59
  • 149. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 53 / 59
  • 150. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 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 (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 53 / 59
  • 151. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 Reto 2 CHALLENGE TIME! Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 54 / 59
  • 152. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 The Legend of Zelda: Phantom Hourglass Contenido sorpresa Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 55 / 59
  • 153. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 The Legend of Zelda: Phantom Hourglass Contenido sorpresa ¿/Test/picture.narc? Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 55 / 59
  • 154. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 The Legend of Zelda: Phantom Hourglass Contenido sorpresa ¿/Test/picture.narc? Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 55 / 59
  • 155. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 The Legend of Zelda: Phantom Hourglass Contenido sorpresa ¿/Test/picture.narc? ¿/Test/BgMap.narc? Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 55 / 59
  • 156. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 The Legend of Zelda: Phantom Hourglass Contenido sorpresa ¿/Test/picture.narc? ¿/Test/BgMap.narc? Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 55 / 59
  • 157. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 The Legend of Zelda: Phantom Hourglass Historia Modificar cuarto diálogo. Modificar imagen. Modificar tipografía. Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 56 / 59
  • 158. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 The Legend of Zelda: Phantom Hourglass Historia Modificar cuarto diálogo. Modificar imagen. Modificar tipografía. Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 56 / 59
  • 159. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 The Legend of Zelda: Phantom Hourglass Historia Modificar cuarto diálogo. Modificar imagen. Modificar tipografía. Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 56 / 59
  • 160. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 The Legend of Zelda: Phantom Hourglass Historia: Punteros Modificar 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 final con: 1A 00 08 01 0E 00 7D 00. Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 57 / 59
  • 161. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 The Legend of Zelda: Phantom Hourglass Historia: Imágenes Modificar imagen Ruta: /Event/Kamishibai/kami1/kami1-01. Seleccionar Replace palette. Importar imagen con mismas dimensiones: Ancho: 256 píxeles. Alto: 192 píxeles. Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 58 / 59
  • 162. Introducción Hello World! Reto 1 Textos Imágenes Media Reto 2 The Legend of Zelda: Phantom Hourglass Historia: Tipografía Modificar tipografía Cambiar primer texto por: 2xdx = x2 + K Tipografía: /Font/zeldaDS_15.nftr. Reemplazar caracteres japoneses por: y 2 Benito Palacios (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2017 59 / 59