22434-Escuela_de_ROM_Hacking_GBA_general_de_Ramihack
#0
Ramihack 26248
Os doy la bienvenida a mi escuela de ROM Hacking
Hola a todos los hackers. He abierto esta escuela para que, si acabáis de empezar no tengáis dificultades a la hora de aprender a romhackear. En esta escuela aprenderéis de todos los campos del ROM Hacking periódicamente, es decir, primero las bases del mapping, scripting, tiling, etc. Luego conocimientos avanzados… Espero que mis lecciones os resulten amenas y explicativas. Mi intención es ir posteando una lección de cada campo cada 2 días, pero si queréis que las suba diariamente, avisadme. No hay inconveniente. Al final de cada lección os propongo unos ejercicios para practicar lo aprendido en la lección. Si queréis que los evalúe y os de consejos para mejorarlos, subid una imagen de los mapas y gráficos y un vídeo de los scripts. Os daré una nota sobre diez y consejos sobre cómo mejorar, por ejemplo, vuestra combinación de gráficos en los mapas. Hablemos de los temas importantes de la escuela. Para que podáis seguir mi escuela sin problemas, aquí os dejo el link de un pack que he preparado con herramientas y ROMs.

Pack de Hack ROM GBA by Ramihack 20-07-2013.rar

Normas:
Me gustaría que la escuela se mantenga lo más limpia posible, así que, por favor, únicamente postead dudas aquí. Los comentarios negativos, me los decís por perfil o por MP, y los del tipo “Gracias” o “Tus lecciones me han ayudado”, no los posteéis. Simplemente dadle al botón de +Gracias del post principal. Las nuevas lecciones las postearé en el post principal para evitar confusión.

Inscripciones:
Si queréis, podéis inscribiros avisándome por MP o por perfil. Yo os inscribiré en la escuela. Puedo admitir un máximo 20 alumnos, aunque todos podéis postear vuestras dudas, estéis o no inscritos. La única diferencia, es que a los alumnos inscritos les avisaré por MP cada vez que suba nuevas lecciones, y responderé antes a sus dudas. Aunque responderé a las de todos. De momento están inscritos:

• Nintendo123
• Agh14
• Don!
• Braxpok
• Lord Roxas
• Pacodelopio
• KakilbG
• Lord Darkrai
• currokiko10
• serguis
• G&G Pokémon
• Mega~Luc@rio╚S╣
• xWarCry

Dudas:
Postead aquí las dudas y yo las responderé. Si veo que una duda puede interesar a más gente, la postearé en el apartado “Dudas de interés general”. Responderé antes a las dudas de los alumnos inscritos oficialmente, aunque os responderé a todos.

Acepto peticiones y sugerencias:
Si queréis que haga una lección sobre un tema en particular que no es lo suficientemente amplio como para dedicarle una sección entera, decídmelo, y será posteado en el apartado “Lecciones a petición de los usuarios”. En cuanto a las sugerencias, si no os queda claro algo de mis lecciones, o veis que algo no está bien explicado, decídmelo y lo corregiré.
Sobre las prácticas:

Al final de cada lección, como ya dije, os propongo unos ejercicios de práctica para que mejoréis vuestras habilidades de hackers. Los ejercicios, como dije antes, serán evaluados por mí si así lo decidís. Si queréis que los evalúe, mandádmelos por MP. Según como sean las prácticas, os pediré una foto o un vídeo. Por favor, mandadme los ejercicios por MP. No los posteéis en la escuela ya que sería un caos. Cuando haya evaluado vuestros ejercicios, os diré la nota y los consejos por MP.

No me enrollo más con normas y movidas de estas y empiezo a postear.







[/SPOILER]













Script de ejemplo:

#dynamic 0x000000

#org @inicio
lock
faceplayer
msgbox @mensaje 0x6
applymovement 0x2 @movimiento
release
end

#org @mensaje
=Mira como me muevo.

#org @movimiento
#raw 0x8
#raw 0x9
#raw 0xFE

PARA PRACTICAR
Hacer un script de applymovement moviendo el mini que queráis. Subid el vídeo para que lo vea.

[/SPOILER]





Fadesong
Reproduce cierta canción durante el transcurso del script. Se escribe así:

fadesong 0x(número de la canción)

El número de las canciones lo podemos averiguar con Advance Map. Nos vamos a cualquier mapa y en el cabezal, donde definimos la música del mapa, en la lista de canciones hay un número al lado de cada canción. Por ejemplo, 015E. Se pondría fadesong 0x15E. El primer cero delante del número de la canción no se pone.

Cry
Reproduce el grito de un Pokémon. Se escribe así:

cry 0x(número del pokémon en la pokédex nacional en hex)

Para saber el número del Pokémon, abrid el archivo stdpoke que viene con vuestro XSE.

PARA PRACTICAR
Hacer un script con cada uno de los tres comandos. Subid el vídeo para que lo vea.
[/SPOILER]





Fadescreen

Hace un flash de pantalla. Se escribe así:

fadescreen 0x(tipo de fade)

Los tipos de fade son los siguientes:

0x0-negro rápido
0x1-blanco rápido
0x2-negro largo
0x3-blanco largo

Movesprite
El movesprite es un tipo de applymovement muy peculiar. Lo que hace es que mueve un mini del mapa a las coordenadas x e y indicadas. Se escribe así en un script:

movesprite 0x(número de gente) 0x(coordenada x) 0x(coordenada y)

Para saber la coordenada x e y de un bloque del mapa se coloca el puntero sobre el bloque al que queremos mover el mini y las coordenadas aparecen abajo a la izquierda.

Setmaptile

El setmaptile es un comando bastante útil, aunque su uso es peculiar. Lo que hace este comando es mapear mediante script. Es decir, nos permite colocar el bloque indicado en la posición del mapa que queramos. Se escribe así en un script:

setmaptile 0x(coordenada x) 0x(coordenada y) 0x(número de tile) 0x(tipo de movimiento del tile)

Ya sabéis como averiguar las coordenadas, pero no el número del tile. El número del tile lo podemos saber en Advance Map. Ponemos el puntero sobre el tile a colocar y abajo a la izquierda aparecerán dos números. El número de tile es el que está a la izquierda. Lo del tipo de movimiento del tile… solo podemos poner dos tipos: 0x0(no se puede pasar) y 0x1(se puede pasar). Un ejemplo de setmaptile:

setmaptile 0x14 0x2F 0x4E 0x0

Tened en cuenta que el setmaptile se deshace cuando salís del mapa, de manera que el tile volverá a la normalidad.

Setweather y doweather

Unos comandos cuyos nombres bien explican su función. Setweather hace que cambie el clima, y doweather lo ejecuta. Me explico, si pones setweather pero no doweather, no ocurrirá nada. Se escribe así en un script:

setweather 0x(tipo de clima)

Aquí os dejo la lista de los climas:



Warp

Nada más fácil. Nos lleva a otro mapa. Se escribe así:

warp 0x(banco de mapa) 0x(número de mapa) 0x(warp de ese mapa por el que saldremos) 0x(coordenada x) 0x(coordenada y)

Hay varios tipos de warp, a saber:
Warp: nos teleporta. Con efecto puerta.
Warphole: con efecto agujero.
Warpmuted: sin ningún efecto.
Warpwalk: con efecto de caminar
Warpteleport: con efecto de teleportador

Showpokepic

Sencillísimo. Nos muestra el sprite de un Pokémon. Se escribe así (todo en hexadecimal)
showpokepic 0x(número del Pokémon) 0x(coordenada x) 0x(coordenada y)
Ya´ta. Eso es todo. Cuando queramos que el sprite desaparezca de la pantalla hay que poner hidepokepic.

PARA PRACTICAR
Hacer un script de cada tipo explicado en la lección. Subid el vídeo para que lo vea.
[/SPOILER]



[/SPOILER]







[/SPOILER]








[/SPOILER]





Créditos a DAGERMN por la información.



Créditos a Acspower por la información.



Créditos a Davoker por la información

Os lo explicaré paso a paso:

1.- Buscar nuestro Worldmap en UNLz GBA:
Lo que hay que hacer es ir a la dirección en UNLz de nuestro Worldmap. Una vez lleguemos a ella, veréis un gráfico un tanto extraño. Algo como esto.



Aunque no lo parezca ese es el Worldmap. Lo que pasa es que debemos editarlo en un formato especial. Si editásemos esa extraña imagen como un sprite cualquiera y lo volviéramos a insertar en UNLz, habría problemas. Lo que hay que hacer es editarlo en formato .RAW. Para ello usaremos un programa como Cyclone o NTME. Yo os recomiendo encarecidamente este último. Lo que hay que hacer para exportarlo en RAW es dar en el botón Raw Dump. Entonces lo guardamos.

2.- Encontrar el tileset de nuestro mapa:
Todo gráfico en formato RAW requiere un tileset para ser editado. Para encontrar el tileset de nuestro mapa hay que jugar a nuestro ROM con el Visual Boy Advance. Tenemos que jugar hasta que podamos acceder al Worldmap, es decir, hasta llegar a la habitación del protagonista. Entonces, miramos el worldmap. Cuando lo tengamos en pantalla damos en Tools>Tile Viewer, y nos saldrá una ventana con varias opciones que hay que marcar de la siguiente manera:



Al picar así las opciones veremos el tileset del worldmap. Damos en Save y lo guardamos donde queramos. Ahora hay que editar en paint el tileset. Lo único que hay que hacer es recortar la imagen verticalmente todo lo que podamos de manera que se ajuste al tileset. A mí me quedó así:

Después



Después



3.- Hacer nuestro Worldmap:
Una vez conseguido el tileset hay que abrir NTME. Antes de nada, damos en Edit>Mode>8bpp. Ahora damos en Load Tileset y seleccionamos nuestro tileset. El tileset aparecerá en el cuadro de arriba. Entonces damos en Open TileMap y seleccionamos nuestro Worldmap en formato RAW. Ahora se verá el Worldmap de nuestro juego. Ahora es como hacer un mapa en Advance Map. Con los bloques de arriba construimos nuestro Worldmap en el cuadro de abajo. Esto puede llevaros un buen rato. Yo he hecho este Worldmap de prueba:



Una vez acabado el Worldmap, damos en File>Save Tile Map y lo guardamos donde queramos. Ahora volvemos a UNLz GBA, en el casillero de nuestro mapa damos en File>Load RAW y seleccionamos nuestro mapa. Cuando se haya cargado, damos en Write to ROM y marcamos las dos primeras opciones. Damos en Ok y probamos el ROM. A mí me ha quedado así:

[/SPOILER]
[/SPOILER]