WAH'S MEORH | UNIDAD 4: SCRIPTING
TEMA 1: INTRODUCCIÓN
Lo primero que quiero hacer es disculparme por las demoras en la escuela. Tanto Sub como yo hemos tenido algunos problemitas y distintas ocupaciones. Esperamos sepan perdonarnos.
Vamos a empezar con uno de los temas más importantes en el RH: Scripting.
¿Qué es el scripting?
Es, de alguna forma, programación. Es decir, mediante una lista definida de comandos (palabras) que se corresponde cada uno con uno o varios algoritmos, escribimos un programa que, en el juego, desarrolla un evento.
¿La charla con el Profesor Oak al intentar salir del pueblo? Scripting.
¿Cuando la esposa del Profesor Birch nos detiene al entrar en su casa y nos manda arriba? Scripting.
¿Las peleas del Alto Mando? ¿El evento de Groudon o Kyogre? ¿Cuando nos dan las deportivas? Scripting, scripting, scripting.
¿Ven por qué es tan importante? Un hack podría desarrollar su historia sin tiles nuevos, sin megaevoluciones, sin tener los pokémons de todas las generaciones e incluso con mapas originales. Pero un juego sin nuevos scripts, no tiene ningún cambio en la trama.
Cada comando del scripting se corresponde con un número diferente que el engine del juego lee y, mediante ese número y los parámetros que le demos, ejecuta la rutina correspondiente.
En esta unidad aprenderemos lo más posible sobre el scripting. Sé que a algunos les cuesta más que a otros, así que no apuraré a nadie. Iremos haciendo los tutoriales de la forma más detallada posible.
Para scriptear, existen diferentes editores/compiladores en los cuales escribimos el script y éste lo transforma en su equivalente hexadecimal y lo inserta en la ROM.
TEMA 2: CONOCIENDO LOS EDITORES - RED ALIEN
La mayoría de los tutoriales de scripting que encontrarán están dirigidos a XSE así que, si bien lo explicaremos, intentaremos centrarnos en el Red Alien, el editor de scripts creado por cosarara97.
Al momento de descargarlo, recomiendo no hacerlo de su tema aquí en el foro pues a veces queda desactualizado. La última versión la pueden encontrar siempre en su web personal.
Una vez descargado y descomprimido, lo ejecutamos (con interfaz gráfica) abriendo el archivo "asc-qt.exe".
A la izquierda marcado en rojo está el número de línea.
Arriba, en verde, los "#include". Eso lo que hace es incluir los archivos std (std = standard) que nos permiten hacer distintas cosas. Por ejemplo, en lugar de poner el número de la flag de la primer medalla, podemos escribir FR_BADGE1; o para las comparaciones ponemos if B_>= en lugar de if 0x4; lo que es mucho más descriptivo y entendible.
En amarillo está marcado el #dynamic o #dyn que lo que hace es especificar desde qué offset el compilador busca espacio para las etiquetas dinámicas (lo entenderemos luego).
Por último, en naranja tenemos marcado la "etiqueta dinámica" que dije antes y que es el inicio del cuerpo de nuestro script.
Bueno, el naranja es para iniciar un script nuevo (nos abre la pantalla que vimos antes).
El rojo es para abrir archivos de scripts.
El verde es para abrir nuestra ROM y, así, poder compilar el script en ella.
El azul es para guardar el script como archivo, sí así es, podemos guardarlo sin necesidad de compilarlo para tenerlo a mano.
En azul el botón "Decompile" que sirve para ver un script que hay ya dentro de la ROM (tenemos que tener el offset).
En rojo el botón "Compile" que nos permite compilar el script e insertarlo en la ROM.
TEMA 3: CONCEPTOS BÁSICOS
Offset estático: Como dijimos antes, un offset es una posición de la ROM. Que sea estático significa que le asignamos una posición determinada. Por ejemplo: #org 0x08750000, por ejemplo, "0x08750000" sería el offset. Como ven, es un lugar determinado.
Offset dinámico: Un offset dinámico, en cambio, marcamos el inicio de una parte del script pero no le asignamos un lugar determinado, sino que el compilador buscará espacio libre y se lo asignará automáticamente. Ejemplo: #org @offsetdinamico, la etiqueta @offsetdinamico sería el offset.
Script: Es un conjunto ordenado de comandos. Un ejemplo de script:
Código:
#include "stdlib/std.rbh"
#dyn 0x800000
#org @start
lock
loadptr :buscame
callstd 6
release
end
:buscame
= Sígueme... Búscame...\n
= Tú sabes dónde estoy.\l
= ¡VEN A MI!
#raw 0xFF
@Rafaeljuan @ラクイン @The Sage of da Age @Toni @Arkelao @Shurender FC @Lucho Pro Romhacker HD @N master @~Juankio Uzumaki @Skyflyer @NewHacker12 @~Ventus @Slayer810 @AlejBlue @Yue Toramaru @Dark Night @Wolf @Soul (fan de Naren Jr.) @--Sark-- @WafFleS.700 @Toni I @InfernapEnLlamas @Hero~ @Gorka @CompuMax @~4n1ma~ @IvanHack @MCLuis1212 @Shinichy @AmuSakura @Hkiller @Creepyking @Geonheosis @BonnieClem @Tobimo @TAbelShow @Buiseru @CharoOdadjian
Última edición: