introducción al rom hacking - parte 1
TRANSCRIPT
Rama estudiantil de IEEE en la UGR
Introducción al ROM Hacking:Primeros pasos
Benito Palacios Sá[email protected]
30 de marzo de 2016
Introducción Hello World! Programas de edición Reto
Sobre mi. . .
¿Quién soy?
Benito Palacios Sánchez@pleonex
Graduado en Ingeniería de Tecnologías de TelecomunicaciónTrabajo Fin de Grado sobre seguridad en videojuegos
Miembro de IEEE Student Branch of Granada>6 años en el mundo del ROM HackingMiembro de GradienWords
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 2 / 35
Introducción Hello World! Programas de edición Reto
Sobre mi. . .
¿Quién soy?
Benito Palacios Sánchez@pleonex
Graduado en Ingeniería de Tecnologías de TelecomunicaciónTrabajo Fin de Grado sobre seguridad en videojuegos
Miembro de IEEE Student Branch of Granada>6 años en el mundo del ROM HackingMiembro de GradienWords
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 2 / 35
Introducción Hello World! Programas de edición Reto
Sobre mi. . .
¿Quién soy?
Benito Palacios Sánchez@pleonex
Graduado en Ingeniería de Tecnologías de TelecomunicaciónTrabajo Fin de Grado sobre seguridad en videojuegos
Miembro de IEEE Student Branch of Granada>6 años en el mundo del ROM HackingMiembro de GradienWords
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 2 / 35
Introducción Hello World! Programas de edición Reto
Sobre mi. . .
¿Quién soy?
Benito Palacios Sánchez@pleonex
Graduado en Ingeniería de Tecnologías de TelecomunicaciónTrabajo Fin de Grado sobre seguridad en videojuegos
Miembro de IEEE Student Branch of Granada>6 años en el mundo del ROM HackingMiembro de GradienWords
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 2 / 35
Introducción Hello World! Programas de edición Reto
Sobre mi. . .
¿Quién soy?
Benito Palacios Sánchez@pleonex
Graduado en Ingeniería de Tecnologías de TelecomunicaciónTrabajo Fin de Grado sobre seguridad en videojuegos
Miembro de IEEE Student Branch of Granada>6 años en el mundo del ROM HackingMiembro de GradienWords
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 2 / 35
Introducción Hello World! Programas de edición Reto
Mis proyectos
Tinke
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 3 / 35
Introducción Hello World! Programas de edición Reto
Mis proyectos
Ninokuni: El Mago de las Tinieblas
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 4 / 35
Introducción Hello World! Programas de edición Reto
Mis proyectos
Fan traducciones
Pokémon ConquestFinal Fantasy: Four Heroes
Profesor Layton: London LifeShining Force Feather
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 5 / 35
Introducción Hello World! Programas de edición Reto
Mis proyectos
Fan traducciones
Pokémon ConquestFinal Fantasy: Four Heroes
Profesor Layton: London LifeShining Force Feather
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 5 / 35
Introducción Hello World! Programas de edición Reto
Mis proyectos
Fan traducciones
Pokémon ConquestFinal Fantasy: Four Heroes
Profesor Layton: London LifeShining Force Feather
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 5 / 35
Introducción Hello World! Programas de edición Reto
Mis proyectos
Fan traducciones
Pokémon ConquestFinal Fantasy: Four Heroes
Profesor Layton: London LifeShining Force Feather
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 5 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
Érase una vez. . .
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 6 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
¿Qué es un �chero?
¿ ?Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 7 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
¿Qué hay dentro de un �chero?
¿Qué hay para que veamos. . .. . . imágenes?. . . vídeos?. . .música?
¿Cómo lo vemos eso?
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 8 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
¿Qué hay dentro de un �chero?
¿Qué hay para que veamos. . .. . . imágenes?. . . vídeos?. . .música?
¿Cómo lo vemos eso?
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 8 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
¿Qué hay dentro de un �chero?
¿Qué hay para que veamos. . .. . . imágenes?. . . vídeos?. . .música?
¿Cómo lo vemos eso?
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 8 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
¿Qué hay dentro de un �chero?
¿Qué hay para que veamos. . .. . . imágenes?. . . vídeos?. . .música?
¿Cómo lo vemos eso?
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 8 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
¿Qué hay dentro de un �chero?
¿Qué hay para que veamos. . .. . . imágenes?. . . vídeos?. . .música?
¿Cómo lo vemos eso?
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 8 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
La parte cruda de los archivos
Figura: BMP visto con editor hexadecimal HxDBenito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 9 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
Especi�caciones (BMP)
Posición Tamaño DescripciónCabecera estándar
0x00 0x02 Magic stamp: BM0x02 0x04 Tamaño del �chero0x06 0x04 Reservado0x0A 0x04 Puntero a los datos de la imagen
Cabecera DIB0x00 0x04 Tamaño de esta cabecera0x04 0x04 Ancho de la imagen0x06 0x04 Alto de la imagen0x08 0x02 Número de planos de color (1)0x0A 0x02 Número de bits por píxel
Paleta de coloresPíxeles
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 10 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
Especi�caciones (BMP)
1 Cabecera estándar1 Magic stamp2 Tamaño �chero3 Reservado4 Puntero datos
2 Cabecera DIB1 Tamaño DIB2 Ancho3 Alto4 Planos de color5 BPP6 Meta-datos
3 Paleta4 Píxeles
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 11 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
Especi�caciones (BMP)
1 Cabecera estándar1 Magic stamp2 Tamaño �chero3 Reservado4 Puntero datos
2 Cabecera DIB1 Tamaño DIB2 Ancho3 Alto4 Planos de color5 BPP6 Meta-datos
3 Paleta4 Píxeles
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 11 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
Especi�caciones (BMP)
1 Cabecera estándar1 Magic stamp2 Tamaño �chero3 Reservado4 Puntero datos
2 Cabecera DIB1 Tamaño DIB2 Ancho3 Alto4 Planos de color5 BPP6 Meta-datos
3 Paleta4 Píxeles
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 11 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
Especi�caciones (BMP)
1 Cabecera estándar1 Magic stamp2 Tamaño �chero3 Reservado4 Puntero datos
2 Cabecera DIB1 Tamaño DIB2 Ancho3 Alto4 Planos de color5 BPP6 Meta-datos
3 Paleta4 Píxeles
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 11 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
Especi�caciones (BMP)
1 Cabecera estándar1 Magic stamp2 Tamaño �chero3 Reservado4 Puntero datos
2 Cabecera DIB1 Tamaño DIB2 Ancho3 Alto4 Planos de color5 BPP6 Meta-datos
3 Paleta4 Píxeles
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 11 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
Especi�caciones (BMP)
1 Cabecera estándar1 Magic stamp2 Tamaño �chero3 Reservado4 Puntero datos
2 Cabecera DIB1 Tamaño DIB2 Ancho3 Alto4 Planos de color5 BPP6 Meta-datos
3 Paleta4 Píxeles
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 11 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
Especi�caciones (BMP)
1 Cabecera estándar1 Magic stamp2 Tamaño �chero3 Reservado4 Puntero datos
2 Cabecera DIB1 Tamaño DIB2 Ancho3 Alto4 Planos de color5 BPP6 Meta-datos
3 Paleta4 Píxeles
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 11 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
Especi�caciones (BMP)
1 Cabecera estándar1 Magic stamp2 Tamaño �chero3 Reservado4 Puntero datos
2 Cabecera DIB1 Tamaño DIB2 Ancho3 Alto4 Planos de color5 BPP6 Meta-datos
3 Paleta4 Píxeles
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 11 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
Especi�caciones (BMP)
1 Cabecera estándar1 Magic stamp2 Tamaño �chero3 Reservado4 Puntero datos
2 Cabecera DIB1 Tamaño DIB2 Ancho3 Alto4 Planos de color5 BPP6 Meta-datos
3 Paleta4 Píxeles
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 11 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
Especi�caciones (BMP)
1 Cabecera estándar1 Magic stamp2 Tamaño �chero3 Reservado4 Puntero datos
2 Cabecera DIB1 Tamaño DIB2 Ancho3 Alto4 Planos de color5 BPP6 Meta-datos
3 Paleta4 Píxeles
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 11 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
Especi�caciones (BMP)
1 Cabecera estándar1 Magic stamp2 Tamaño �chero3 Reservado4 Puntero datos
2 Cabecera DIB1 Tamaño DIB2 Ancho3 Alto4 Planos de color5 BPP6 Meta-datos
3 Paleta4 Píxeles
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 11 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
Especi�caciones (BMP)
1 Cabecera estándar1 Magic stamp2 Tamaño �chero3 Reservado4 Puntero datos
2 Cabecera DIB1 Tamaño DIB2 Ancho3 Alto4 Planos de color5 BPP6 Meta-datos
3 Paleta4 Píxeles
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 11 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
Especi�caciones (BMP)
1 Cabecera estándar1 Magic stamp2 Tamaño �chero3 Reservado4 Puntero datos
2 Cabecera DIB1 Tamaño DIB2 Ancho3 Alto4 Planos de color5 BPP6 Meta-datos
3 Paleta4 Píxeles
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 11 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
Especi�caciones (BMP)
1 Cabecera estándar1 Magic stamp2 Tamaño �chero3 Reservado4 Puntero datos
2 Cabecera DIB1 Tamaño DIB2 Ancho3 Alto4 Planos de color5 BPP6 Meta-datos
3 Paleta4 Píxeles
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 11 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
¿Qué hay dentro de un juego?
¿ ?
→
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 12 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
¿Qué hay dentro de un juego?
¿ ?→Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 12 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
La parte cruda de un juego
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 13 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
¿Y ahora? ¿Y la especi�cación?
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 14 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
ROM Hacking
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 15 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
ROM Hacking
Propósito:Fan traduccionesModsExtraer recursosCuriosidad
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 16 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
ROM Hacking
Propósito:Fan traduccionesModsExtraer recursosCuriosidad
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 16 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
ROM Hacking
Propósito:Fan traduccionesModsExtraer recursosCuriosidad
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 16 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
ROM Hacking
Propósito:Fan traduccionesModsExtraer recursosCuriosidad
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 16 / 35
Introducción Hello World! Programas de edición Reto
¿Qué es ROM Hacking?
ROM Hacking
Propósito:Fan traduccionesModsExtraer recursosCuriosidad
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 16 / 35
Introducción Hello World! Programas de edición Reto
Temario
Contenido del curso
Introducción al ROM Hacking
1 Primeros pasos1 ¿Qué es ROM Hacking?2 Hello World!3 Reto
2 Formatos comunes en juegos1 Textos2 Imágenes3 Tipografías y audios4 Reto
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 17 / 35
Introducción Hello World! Programas de edición Reto
Temario
Contenido del curso
Introducción al ROM Hacking
1 Primeros pasos1 ¿Qué es ROM Hacking?2 Hello World!3 Reto
2 Formatos comunes en juegos1 Textos2 Imágenes3 Tipografías y audios4 Reto
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 17 / 35
Introducción Hello World! Programas de edición Reto
Hello World!
ROM HACKING TIME!
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 18 / 35
Introducción Hello World! Programas de edición Reto
NitroROM
Especi�cación de juegos de NDS
GBATEKGameboy Advance / Nintendo DS / DSi - Technical InfoTrabajo de Martin Korth en el desarrollo de no$gba.
http://problemkaputt.de/gbatek.htm
CabeceraBinario ARM9Overlays ARM9
Binario ARM7Overlays ARM7File Name Table
File Allocation TableBannerArchivos
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 19 / 35
Introducción Hello World! Programas de edición Reto
NitroROM
Especi�cación de juegos de NDS
GBATEKGameboy Advance / Nintendo DS / DSi - Technical InfoTrabajo de Martin Korth en el desarrollo de no$gba.
http://problemkaputt.de/gbatek.htm
CabeceraBinario ARM9Overlays ARM9
Binario ARM7Overlays ARM7File Name Table
File Allocation TableBannerArchivos
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 19 / 35
Introducción Hello World! Programas de edición Reto
NitroROM
Especi�cación de juegos de NDS
GBATEKGameboy Advance / Nintendo DS / DSi - Technical InfoTrabajo de Martin Korth en el desarrollo de no$gba.
http://problemkaputt.de/gbatek.htm
CabeceraBinario ARM9Overlays ARM9
Binario ARM7Overlays ARM7File Name Table
File Allocation TableBannerArchivos
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 19 / 35
Introducción Hello World! Programas de edición Reto
NitroROM
Especi�cación de juegos de NDS
GBATEKGameboy Advance / Nintendo DS / DSi - Technical InfoTrabajo de Martin Korth en el desarrollo de no$gba.
http://problemkaputt.de/gbatek.htm
CabeceraBinario ARM9Overlays ARM9
Binario ARM7Overlays ARM7File Name Table
File Allocation TableBannerArchivos
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 19 / 35
Introducción Hello World! Programas de edición Reto
NitroROM
Especi�cación de juegos de NDS
GBATEKGameboy Advance / Nintendo DS / DSi - Technical InfoTrabajo de Martin Korth en el desarrollo de no$gba.
http://problemkaputt.de/gbatek.htm
CabeceraBinario ARM9Overlays ARM9
Binario ARM7Overlays ARM7File Name Table
File Allocation TableBannerArchivos
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 19 / 35
Introducción Hello World! Programas de edición Reto
NitroROM
Especi�cación de juegos de NDS
GBATEKGameboy Advance / Nintendo DS / DSi - Technical InfoTrabajo de Martin Korth en el desarrollo de no$gba.
http://problemkaputt.de/gbatek.htm
CabeceraBinario ARM9Overlays ARM9
Binario ARM7Overlays ARM7File Name Table
File Allocation TableBannerArchivos
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 19 / 35
Introducción Hello World! Programas de edición Reto
Conceptos
Números hexadecimales
Decimal: 0 1 2 3 4 5 6 7 8 90 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
Binario: 0 10 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 70 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 F0 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 Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 20 / 35
Introducción Hello World! Programas de edición Reto
Conceptos
Números hexadecimales
Decimal: 0 1 2 3 4 5 6 7 8 90 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
Binario: 0 10 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 70 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 F0 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 Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 20 / 35
Introducción Hello World! Programas de edición Reto
Conceptos
Números hexadecimales
Decimal: 0 1 2 3 4 5 6 7 8 90 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
Binario: 0 10 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 70 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 F0 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 Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 20 / 35
Introducción Hello World! Programas de edición Reto
Conceptos
Números hexadecimales
Decimal: 0 1 2 3 4 5 6 7 8 90 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
Binario: 0 10 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 70 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 F0 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 Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 20 / 35
Introducción Hello World! Programas de edición Reto
Conceptos
Números hexadecimales
Decimal: 0 1 2 3 4 5 6 7 8 90 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
Binario: 0 10 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 70 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 F0 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 Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 20 / 35
Introducción Hello World! Programas de edición Reto
Conceptos
Números hexadecimales
Pre�jo 0x o su�jo h0xA, FBh, 0xCA, FEh
Fácil representación de enteros:
# Rango Ejemplo Bytes Bits Otros nombres1 [0, 15] 0xC ½ 42 [0, 255] 0xC0 1 8 byte4 [0, 65,535] 0x0200 2 16 ushort, WORD8 [0, 4,294,967,295] 0xB7000000 4 32 uint, DWORD
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 21 / 35
Introducción Hello World! Programas de edición Reto
Conceptos
Números hexadecimales
Pre�jo 0x o su�jo h0xA, FBh, 0xCA, FEh
Fácil representación de enteros:
# Rango Ejemplo Bytes Bits Otros nombres1 [0, 15] 0xC ½ 42 [0, 255] 0xC0 1 8 byte4 [0, 65,535] 0x0200 2 16 ushort, WORD8 [0, 4,294,967,295] 0xB7000000 4 32 uint, DWORD
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 21 / 35
Introducción Hello World! Programas de edición Reto
Conceptos
Endianness
Orden en el que se guardan los bytes que forman valoresmayores a 8 bits (ushort, uint, ulong, . . . ). MSB→LSB.
Big Endian:
Little Endian (más común):
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 22 / 35
Introducción Hello World! Programas de edición Reto
Conceptos
Endianness
Orden en el que se guardan los bytes que forman valoresmayores a 8 bits (ushort, uint, ulong, . . . ). MSB→LSB.
Big Endian:
Little Endian (más común):
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 22 / 35
Introducción Hello World! Programas de edición Reto
Conceptos
Endianness
Orden en el que se guardan los bytes que forman valoresmayores a 8 bits (ushort, uint, ulong, . . . ). MSB→LSB.
Big Endian:
Little Endian (más común):
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 22 / 35
Introducción Hello World! Programas de edición Reto
Investigando un juego
Tinke
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 23 / 35
Introducción Hello World! Programas de edición Reto
Investigando un juego
Tinke
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 23 / 35
Introducción Hello World! Programas de edición Reto
Investigando un juego
Tipos de �cheros
PaletaTilesMapSpritesAnimacionesModelos 3DTexturasImagen completa
TextoTipografíaScriptsArchivo comprimidoPaqueteMúsicaVídeo
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 24 / 35
Introducción Hello World! Programas de edición Reto
Editar juegos
Modi�cando textos
1 Localizar texto a modi�car2 Abrir juego en Tinke3 Localizar textos4 Extraer archivo5 Modi�car con editor6 Importar archivo7 Generar ROM8 Probar en DeSmuME
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 25 / 35
Introducción Hello World! Programas de edición Reto
Editar juegos
Modi�cando textos
1 Localizar texto a modi�car2 Abrir juego en Tinke3 Localizar textos4 Extraer archivo5 Modi�car con editor6 Importar archivo7 Generar ROM8 Probar en DeSmuME
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 25 / 35
Introducción Hello World! Programas de edición Reto
Editar juegos
Modi�cando textos
1 Localizar texto a modi�car2 Abrir juego en Tinke3 Localizar textos4 Extraer archivo5 Modi�car con editor6 Importar archivo7 Generar ROM8 Probar en DeSmuME
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 25 / 35
Introducción Hello World! Programas de edición Reto
Editar juegos
Modi�cando textos
1 Localizar texto a modi�car2 Abrir juego en Tinke3 Localizar textos4 Extraer archivo5 Modi�car con editor6 Importar archivo7 Generar ROM8 Probar en DeSmuME
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 25 / 35
Introducción Hello World! Programas de edición Reto
Editar juegos
Modi�cando textos
1 Localizar texto a modi�car2 Abrir juego en Tinke3 Localizar textos4 Extraer archivo5 Modi�car con editor6 Importar archivo7 Generar ROM8 Probar en DeSmuME
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 25 / 35
Introducción Hello World! Programas de edición Reto
Editar juegos
Modi�cando textos
1 Localizar texto a modi�car2 Abrir juego en Tinke3 Localizar textos4 Extraer archivo5 Modi�car con editor6 Importar archivo7 Generar ROM8 Probar en DeSmuME
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 25 / 35
Introducción Hello World! Programas de edición Reto
Editar juegos
Modi�cando textos
1 Localizar texto a modi�car2 Abrir juego en Tinke3 Localizar textos4 Extraer archivo5 Modi�car con editor6 Importar archivo7 Generar ROM8 Probar en DeSmuME
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 25 / 35
Introducción Hello World! Programas de edición Reto
Editar juegos
Modi�cando textos
1 Localizar texto a modi�car2 Abrir juego en Tinke3 Localizar textos4 Extraer archivo5 Modi�car con editor6 Importar archivo7 Generar ROM8 Probar en DeSmuME
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 25 / 35
Introducción Hello World! Programas de edición Reto
Editar juegos
Modi�cando textos
1 Localizar texto a modi�car2 Abrir juego en Tinke3 Localizar textos4 Extraer archivo5 Modi�car con editor6 Importar archivo7 Generar ROM8 Probar en DeSmuME
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 25 / 35
Introducción Hello World! Programas de edición Reto
Publicar cambios
Parches
Solo contienen las modi�caciones
No subir el juego modi�cado
Tamaño pequeño (entre 1 y 20 MB)
Formatos comunes: IPS y xDelta
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 26 / 35
Introducción Hello World! Programas de edición Reto
Publicar cambios
Parches
Solo contienen las modi�caciones
No subir el juego modi�cado
Tamaño pequeño (entre 1 y 20 MB)
Formatos comunes: IPS y xDelta
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 26 / 35
Introducción Hello World! Programas de edición Reto
Publicar cambios
Parches
Solo contienen las modi�caciones
No subir el juego modi�cado
Tamaño pequeño (entre 1 y 20 MB)
Formatos comunes: IPS y xDelta
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 26 / 35
Introducción Hello World! Programas de edición Reto
Publicar cambios
Parches
Solo contienen las modi�caciones
No subir el juego modi�cado
Tamaño pequeño (entre 1 y 20 MB)
Formatos comunes: IPS y xDelta
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 26 / 35
Introducción Hello World! Programas de edición Reto
Publicar cambios
xDelta
Windows: xdelta UIhttp://www.romhacking.net/utilities/598/
Mac OS X: Multipatchhttp://projects.sappharad.com/tools/multipatch.html
Linux: xdeltaParchear:xdelta -d -s ORIGINAL PARCHECrear parche:xdelta -9 -s ORIGINAL MODIFICADOPARCHE
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 27 / 35
Introducción Hello World! Programas de edición Reto
Publicar cambios
xDelta
Windows: xdelta UIhttp://www.romhacking.net/utilities/598/
Mac OS X: Multipatchhttp://projects.sappharad.com/tools/multipatch.html
Linux: xdeltaParchear:xdelta -d -s ORIGINAL PARCHECrear parche:xdelta -9 -s ORIGINAL MODIFICADOPARCHE
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 27 / 35
Introducción Hello World! Programas de edición Reto
Publicar cambios
xDelta
Windows: xdelta UIhttp://www.romhacking.net/utilities/598/
Mac OS X: Multipatchhttp://projects.sappharad.com/tools/multipatch.html
Linux: xdeltaParchear:xdelta -d -s ORIGINAL PARCHECrear parche:xdelta -9 -s ORIGINAL MODIFICADOPARCHE
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 27 / 35
Introducción Hello World! Programas de edición Reto
Pokémon
Advanced Map
Proyecto: http://ampage.no-ip.info/
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 28 / 35
Introducción Hello World! Programas de edición Reto
Pokémon
Spiky’s DS Map Editor
Proyecto: https://github.com/MarcRiera/SDSMEBenito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 29 / 35
Introducción Hello World! Programas de edición Reto
New Super Mario Bros DS
NSMB Editor
Proyecto: https://github.com/Dirbaio/NSMB-Editor
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 30 / 35
Introducción Hello World! Programas de edición Reto
Super Mario 64 DS
Super Mario 64 Editor
Descarga: http://www.romhacking.net/utilities/764Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 31 / 35
Introducción Hello World! Programas de edición Reto
Ni no kuni
NinoCompiler
Proyecto: http://gradienwords.comGitHub: https://github.com/pleonex/Ninokuni
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 32 / 35
Introducción Hello World! Programas de edición Reto
Ni no kuni
NinoCompiler
Proyecto: http://gradienwords.comGitHub: https://github.com/pleonex/Ninokuni
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 32 / 35
Introducción Hello World! Programas de edición Reto
Ni no kuni
NinoCompiler
→
Proyecto: http://gradienwords.comGitHub: https://github.com/pleonex/Ninokuni
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 32 / 35
Introducción Hello World! Programas de edición Reto
Ni no kuni
NinoCompiler
→Proyecto: http://gradienwords.com
GitHub: https://github.com/pleonex/Ninokuni
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 32 / 35
Introducción Hello World! Programas de edición Reto
Reto
CHALLENGE TIME!
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 33 / 35
Introducción Hello World! Programas de edición Reto
Puzles en Profesor Layton
Objetivo
Crear un puzle
Título (script/puzzletitle)Localización (script/qinfo)Descripción (qtext)Pistas (qtext)Respuesta (qtext)Picarats (script/pcarot)Entrada (script/qscript)
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 34 / 35
Introducción Hello World! Programas de edición Reto
Puzles en Profesor Layton
Objetivo
Crear un puzle
Título (script/puzzletitle)Localización (script/qinfo)Descripción (qtext)Pistas (qtext)Respuesta (qtext)Picarats (script/pcarot)Entrada (script/qscript)
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 34 / 35
Introducción Hello World! Programas de edición Reto
Puzles en Profesor Layton
Objetivo
Crear un puzle
Título (script/puzzletitle)Localización (script/qinfo)Descripción (qtext)Pistas (qtext)Respuesta (qtext)Picarats (script/pcarot)Entrada (script/qscript)
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 34 / 35
Introducción Hello World! Programas de edición Reto
Puzles en Profesor Layton
Objetivo
Crear un puzle
Título (script/puzzletitle)Localización (script/qinfo)Descripción (qtext)Pistas (qtext)Respuesta (qtext)Picarats (script/pcarot)Entrada (script/qscript)
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 34 / 35
Introducción Hello World! Programas de edición Reto
Puzles en Profesor Layton
Objetivo
Crear un puzle
Título (script/puzzletitle)Localización (script/qinfo)Descripción (qtext)Pistas (qtext)Respuesta (qtext)Picarats (script/pcarot)Entrada (script/qscript)
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 34 / 35
Introducción Hello World! Programas de edición Reto
Puzles en Profesor Layton
Objetivo
Crear un puzle
Título (script/puzzletitle)Localización (script/qinfo)Descripción (qtext)Pistas (qtext)Respuesta (qtext)Picarats (script/pcarot)Entrada (script/qscript)
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 34 / 35
Introducción Hello World! Programas de edición Reto
Puzles en Profesor Layton
Objetivo
Crear un puzle
Título (script/puzzletitle)Localización (script/qinfo)Descripción (qtext)Pistas (qtext)Respuesta (qtext)Picarats (script/pcarot)Entrada (script/qscript)
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 34 / 35
Introducción Hello World! Programas de edición Reto
Puzles en Profesor Layton
Pistas sobre los scripts
Primeros 4 bytes es el tamaño del archivo
Se compone de múltiples comandos + argumentosDespues de 0x0000 va el ID del comandoEl formato de los argumentos es tipo + valorEl tipo 0x0001 es un entero de 32 bitsEl tipo 0x0003 es una cadena de caracteres de longitudvariableLos scripts terminan con 0x000C
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 35 / 35
Introducción Hello World! Programas de edición Reto
Puzles en Profesor Layton
Pistas sobre los scripts
Primeros 4 bytes es el tamaño del archivoSe compone de múltiples comandos + argumentos
Despues de 0x0000 va el ID del comandoEl formato de los argumentos es tipo + valorEl tipo 0x0001 es un entero de 32 bitsEl tipo 0x0003 es una cadena de caracteres de longitudvariableLos scripts terminan con 0x000C
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 35 / 35
Introducción Hello World! Programas de edición Reto
Puzles en Profesor Layton
Pistas sobre los scripts
Primeros 4 bytes es el tamaño del archivoSe compone de múltiples comandos + argumentosDespues de 0x0000 va el ID del comando
El formato de los argumentos es tipo + valorEl tipo 0x0001 es un entero de 32 bitsEl tipo 0x0003 es una cadena de caracteres de longitudvariableLos scripts terminan con 0x000C
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 35 / 35
Introducción Hello World! Programas de edición Reto
Puzles en Profesor Layton
Pistas sobre los scripts
Primeros 4 bytes es el tamaño del archivoSe compone de múltiples comandos + argumentosDespues de 0x0000 va el ID del comandoEl formato de los argumentos es tipo + valor
El tipo 0x0001 es un entero de 32 bitsEl tipo 0x0003 es una cadena de caracteres de longitudvariableLos scripts terminan con 0x000C
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 35 / 35
Introducción Hello World! Programas de edición Reto
Puzles en Profesor Layton
Pistas sobre los scripts
Primeros 4 bytes es el tamaño del archivoSe compone de múltiples comandos + argumentosDespues de 0x0000 va el ID del comandoEl formato de los argumentos es tipo + valorEl tipo 0x0001 es un entero de 32 bits
El tipo 0x0003 es una cadena de caracteres de longitudvariableLos scripts terminan con 0x000C
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 35 / 35
Introducción Hello World! Programas de edición Reto
Puzles en Profesor Layton
Pistas sobre los scripts
Primeros 4 bytes es el tamaño del archivoSe compone de múltiples comandos + argumentosDespues de 0x0000 va el ID del comandoEl formato de los argumentos es tipo + valorEl tipo 0x0001 es un entero de 32 bitsEl tipo 0x0003 es una cadena de caracteres de longitudvariable
Los scripts terminan con 0x000C
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 35 / 35
Introducción Hello World! Programas de edición Reto
Puzles en Profesor Layton
Pistas sobre los scripts
Primeros 4 bytes es el tamaño del archivoSe compone de múltiples comandos + argumentosDespues de 0x0000 va el ID del comandoEl formato de los argumentos es tipo + valorEl tipo 0x0001 es un entero de 32 bitsEl tipo 0x0003 es una cadena de caracteres de longitudvariableLos scripts terminan con 0x000C
Benito Palacios Sánchez (IEEE SB UGR) Introducción al ROM Hacking Marzo de 2016 35 / 35