introducción al rom hacking - parte 1

Post on 15-Apr-2017

411 Views

Category:

Engineering

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Rama estudiantil de IEEE en la UGR

Introducción al ROM Hacking:Primeros pasos

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

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

top related