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

Avisos


Like Tree12Gracias
  • 9 Post By EnamoratDeKatie
  • 2 Post By Turambar
  • 1 Post By EnamoratDeKatie
 
 
Herramientas Desplegado
  #1  
22/01/2017
Predeterminado Clase 5 | U-4: Scripting (I)

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.



Gracias: Loz, Laquin, FEL!X y 6 más.
VISCA CATALUNYA!
LLIBERTAT


"Lluitem pacíficament, perquè és l'essència de la llibertat. Dubtem com qualsevol persona, perquè és l'antídot a la temeritat. Parlem com a demòcrates, perquè és la clau de l'èxit. Confiem els uns amb els altres, perquè serà la derrota dels tirans"

Última edición por EnamoratDeKatie; 31/10/2017 a las 23:51
  #2  
22/01/2017
Predeterminado 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?
  #3  
22/01/2017
Predeterminado Respuesta: Clase 5 | U-4: Scripting (I)
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.
  #4  
22/01/2017
Predeterminado Respuesta: Re: Clase 5 | U-4: Scripting (I)
Dicho por Gorka Ver mensaje
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.

Dicho por The Sage of da Age Ver mensaje
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.
Gracias: Turambar
VISCA CATALUNYA!
LLIBERTAT


"Lluitem pacíficament, perquè és l'essència de la llibertat. Dubtem com qualsevol persona, perquè és l'antídot a la temeritat. Parlem com a demòcrates, perquè és la clau de l'èxit. Confiem els uns amb els altres, perquè serà la derrota dels tirans"
  #5  
22/01/2017
Predeterminado Respuesta: Clase 5 | U-4: Scripting (I)
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
Cute Dance
  #6  
26/01/2017
Predeterminado Respuesta: Clase 5 | U-4: Scripting (I)
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
  #7  
12/02/2017
Predeterminado Respuesta: Clase 5 | U-4: Scripting (I)
gracias de nuebo x el tutorial

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

Gracias de antebraso XDXDXD

¡Jarcors!

 

Herramientas
Desplegado

Permisos para publicar mensajes
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los BB code están Activado
Los Emoticones están Activado
El código [IMG] está Activado
El Código HTML está Desactivado
Trackbacks are Activado
Pingbacks are Activado
Refbacks are Desactivado



Extra
Estilo clásico
La franja horaria es GMT +1. Ahora son las 11:01.

© Whack a Hack! 2019