Registrarse

[RH - Otros] Clase 5 | U-4: Scripting (I)

Estado
Cerrado para nuevas respuestas.

Fran Agustín

Si el sol besa tus ojos, ni cuenta te das.
Miembro insignia

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
Puntero: Es un offset que está inserto en la ROM para "avisarnos" dónde está una determinada información dentro de ella. Si lo vemos en un editor hexadecimal que nos muestre de 1 byte a la vez (dos dígitos hexadecimales), lo veremos "permutado", es decir, si tenemos el offset 0x08724300, permutado quedaría: 00 43 72 08. Es decir, tomado de a dos dígitos y en orden inverso.


 
Última edición:
M

Miembro eliminado 28262

Invitado
No entiendo para que quieren hacer este tipo de cosas y complicar la mente de los noobs aún más, es como ahogarse en un vaso de agua.
 

Fran Agustín

Si el sol besa tus ojos, ni cuenta te das.
Miembro insignia
Respuesta: Re: Clase 5 | U-4: Scripting (I)

Vaya, por fin volvió la escuela :)

Una pregunta, las clases sobre scripting estarán centradas en XSE o en Red Alien?
Aclaro una vez más que estas preguntas van en el tema de la Asamblea Escolar.

Se explicarán ambos, pero intentaremos centrarnos en Red Alien pues no hay aún un mega tuto que lo explique de cero, más allá de la guía que cosarara tiene en su web (en inglés y más bien técnica).

Pero no te preocupes, creeme que Red Alien es muy buen editor y, personalmente, lo considero aún más cómodo y mejor que XSE.

No entiendo para que quieren hacer este tipo de cosas y complicar la mente de los noobs aún más, es como ahogarse en un vaso de agua.
Explícate cuando comentas wn, que no sé de qué hablas e_e
Si hablas de usar Red Alien, no es complicar nada, es acostumbrarnos a usar una herramienta mejor y con posibilidad de desarrollo, que HackMew está prácticamente muerto y XSE no es de código abierto.
Cosarara, en cambio, siempre está atento y todas las veces que me quejé o le reporté bugs en sus herramientas estuvo dispuesto a arreglarlo.
 

NewHacker12

I am beautiful( ͡° ͜ʖ ͡°)
Interesante, no savia de esa herramienta llamada "RedAlien" pero si el profe la recomienda de seguro sera mejor :)

Gracias por las explicaciones.

PD:esto me costara XD
 

IvanHack

No lo pienses, solo hazlo
Yo estoy más acostumbrado a XSE pero no es malo este editor solo que los scripts se expresan de otra manera, por ahora prefiero XSE, Pero bueno hay que darle una oportunidad
Gracias por las clases
 

Laquin

Usuario mítico
gracias de nuebo x el tutorial :D

yo ya estoi acostunbrado a usar xse asi que usare eso cuando aga algo en mi tiempo libre aparte de qe en red alien nose acer muchas cosas como aplimovses i esos
pero le dare una oportunidad :D

Gracias de antebraso XDXDXD
 
Estado
Cerrado para nuevas respuestas.
Arriba