De Whack a Hack Wiki!
En desarrollo. Esta página todavía no está terminada y está en espera de ser editada en breve. Por favor, si quiere ayudar, contacta con sus creadores a través de la página de discusión antes de realizar ningún cambio.
No importa si eres un principiante en el mundo del ROM Hacking o ya tienes experiencia previa, este tutorial te guiará a través de los conceptos fundamentales y te proporcionará ejemplos prácticos para ayudarte a comprender y dominar la creación de scripts de eventos. A través de este tutorial, aprenderás cómo escribir scripts de eventos paso a paso.
Sumario
Introducción
Los eventos se definen mediante scripts, que son secuencias de comandos que controlan la interacción del jugador con el entorno del juego. Puedes usarlos para crear diálogos, activar batallas, desencadenar eventos especiales y mucho más.
A lo largo de este tutorial verás tres modalidades para realizar los mismos scripts:
- poryasm: Es el formato por defecto de Decompilación. Tiene muchas similitudes con el lenguaje utilizado por XSE, el que se utiliza en ROM Hacking Binario.
- poryscript: Es un formato más similar a los lenguajes de programación modernos como JavaScript. Fue concebido para agilizar el proceso de desarrollo de los eventos.
- XSE: Es el formato utilizado por el ROM Hacking binario.
Diálogo básico
Este tipo de script permite crear una interacción del jugador con un NPC.
poryasm
El comando msgbox es el que muestra el mensaje. Este requiere dos elementos:
- La dirección del texto (
NombreDelScript_Texto
). - El tipo de mensaje (
MSGBOX_NPC
).
NombreDelScript:: msgbox NombreDelScript_Texto, MSGBOX_NPC end NombreDelScript_Texto:: .string "Hola mundo.$"
Fíjate que tenemos dos scripts: Uno que contiene el código (NombreDelScript
) y otro que tiene el texto (NombreDelScript_Texto
).
El código siempre termina con el comando end
, mientras que el texto siempre termina con el caracter $
.
poryscript
Poryscript no aporta muchas diferencias con poryasm en este ejemplo. Lo más destacado es que se debe indicar si lo que se va a escribir es un script o si es texto. El contenido se encierra entre llaves ({...}
) y los parámetros se encierran entre paréntesis y separados por comas.
script NombreDelScript { msgbox(NombreDelScript_Texto, MSGBOX_NPC) end } text NombreDelScript_Texto { "Hola mundo." }
La mayor ventaja sobre poryasm es que permite obviar la definición del texto, añadiéndolo directamente en el comando msgbox
:
script NombreDelScript { msgbox("Hola mundo.", MSGBOX_NPC) end }
XSE (Binario)
Fuente.
GBA Hacking desde cero de Javi4315
La etiqueta #dynamic 0x800000
especifica a partir de qué dirección empezará XSE a buscar un espacio vacío donde compilar el script. Por ejemplo, la dirección 0x800000. A partir de ahí las bases suelen tener espacio libre.
La etiqueta #org @inicio
indica el pointer inicial (inicio es un nombre de ejemplo). Esto siempre se debe poner al inicio del script, ya que al compilar se convertirá en un offset, que será el que le asignemos a los NPC en Advance Map para que nuestro script se ejecute.
- El comando
lock
bloquea el movimiento. Así podremos hablar sin que la persona con la que hablamos se vaya. - El comando
faceplayer
hace que la persona con la que hablamos nos mire. - El comando msgbox. Se utiliza de la forma
Msgbox @(puntero del texto) 0x(tipo)
- El puntero del texto es la dirección donde se escribirá nuestro texto.
- Respecto al tipo, dependiendo de si es un cartel, una persona, etc, tiene un tipo. El tipo de msgbox nos dice que caja de texto aparecerá en el juego.
#dynamic 0x800000 #org @inicio lock faceplayer msgbox @texto 0x6 release end #org @texto = Hola mundo.
Carteles
poryasm
poryscript
XSE (Binario)
Fuente.
GBA Hacking desde cero de Javi4315
Recibir objetos
poryasm
poryscript
XSE (Binario)
Fuente.
GBA Hacking desde cero de Javi4315
Recibir Pokémon y huevos
poryasm
poryscript
XSE (Binario)
Fuente.
GBA Hacking desde cero de Javi4315